[완료]셀 스크립트 질문입니다.
글쓴이: xoahrdl / 작성시간: 목, 2007/02/22 - 2:33오후
List1='a b c d'
for type in List1
do
./xxxxxxxxxxxxxx $type xxxxxxxx
./xxxxxxxxxxxxxx $type xxxxxxxx
done
이런식의 간단한 셀 스크립트 작성중입니다.(type이 List1 의 문자열을 차례차례 받는.....)
문제는 제가 List2 를 하나 더 만들어 같은 명령에 하나의 변수를 더 집어 넣고 싶다는 것입니다.
조언부탁드립니다. 여러가지 해봤는데 잘 안되네요..
List1='a b c d'
List2='e f g h'
?????
./xxxxxxxxxxxxxx $type xxxxxxxx < $type1
Forums:
애매한 LOOP?
애매한 LOOP네요..
요지가 조금은 빠진듯한..
아마 아래 2개 중 1개 일거 같은데요..
case (1)
LIST1='a b c d'
LIST2='e f g h'
echo "LIST1 = $LIST1"
echo "LIST2 = $LIST2"
for L1 in $LIST1
do
for L2 in $LIST2
do
echo " $L1 $L2"
done
done
--- output ---
LIST1 = a b c d
LIST2 = e f g h
a e
a f
a g
a h
b e
b f
b g
b h
c e
c f
c g
c h
d e
d f
d g
d h
case (2)
LIST="a:e b:f c:g d:h"
echo "LIST = $LIST"
for L in $LIST
do
L1=`echo $L|awk -F":" '{print $1}'`
L2=`echo $L|awk -F":" '{print $2}'`
echo " $L1 $L2"
done
--- output ---
LIST = a:e b:f c:g d:h
a e
b f
c g
d h
감사합니다.2번째의 경우가 원하는 경우인데..
에러가 나네요
Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...
POSIX options: GNU long options:
.
.
중략
.
.
To report bugs, see node `Bugs' in `gawk.info', which is
section `Reporting Problems and Bugs' in the printed version.
ㅜㅜ
리스트 두개에서 하나씩 뽑아와서 원하는 위치에 넣어주고 싶어서 이렇게 하는거랍니다
이런걸 말씀 하시는 건가요??
배열로 만들어서 접근하는 방식인데요....
이런걸 원하시는 건가요??
(bash 쉘 소스입니다.)
#!/bin/bash
List1='a b c d'
List2='e f g h'
List1_array=($List1)
List2_array=($List2)
i=0
while :
do
type=${List1_array[$i]}
type2=${List2_array[$i]}
if [ "x${type}" = "x" -o "x${type2}" = "x" ] ; then
break;
fi
echo $type":"$type2
let "i = i + 1"
done
--------------------------------------------------
http://www.jacojang.com
답변정말감사드립니다..근데 이게 이해가..^^;
if [ "x${type}" = "x" -o "x${type2}" = "x" ] ; then
break;
fi
이부분이 정확히 어떻게 돌아가는건지 모르겠습니다.
설명좀 부탁드려도 될까요?
쉘 프로그램을 보면
쉘 프로그램을 보면 보통 이런 문법을 많이 쓰는데...
쉘에는 변수형(int,string,...) 이 없기 때문에 어떤 값을 넣었냐에 따라 형이 변합니다.
그러므로 ${type} 에 숫자를 넣으면 숫자형이되고 문자를 넣으면 문자 형이 되는데..
$type 에 값이 있는지 없는지 확인할때
단순히 if [ ${type} = "" ] 이런 식으로 비교해 버리면 ${type} 에 숫자가 늘어간 경우 에러가 발생 합니다.
그걸 방지 하기 위해서 "x${type}" 이런 식으로 확실한 문자열을 만들어서 "x" 와 비교하는 거구요...
위 내용을 C 로 바꾼다면
if ( !strcmp(type,"") || !strcmp(type2,"") ) {
break;
}
가 됩니다.. 즉 -o 는 || 의 역활을 하는 겁니다.
--------------------------------------------------
http://www.jacojang.com
친절한 답변감사드립니다
많은 도움 되었습니다...
댓글 달기