bash 프로그래밍 질문입니다. ^^
글쓴이: jykimi / 작성시간: 목, 2005/07/14 - 2:01오후
안녕하세요 bash로 프로그래밍을 하는데 이해가 안되는 부분이 있습니다.
아래와 같은 아주 짧은 문인데...이상하게 순서를 꼭 이렇게 해야 -n, =, != 순으로 검사를 해야 제대로 작동을 하는 것 같습니다. if문에서 순서가 있는 건가요? 아님 제가 어딜 잘못해서 그런건가요?
--; 고수 여러분의 조언 부탁드립니다.
------------------------------------------------------------------------
#!/bin/bash
echo -n "Choose vob which $rlb exits [xgw, cpsw] : "
read avob
if test -z $avob ; then
echo "Warning : Write correct vob name is -z if"
elif test $avob = "xgw" -o $avob = "cpsw"; then
echo "xgw or cpsw"
elif test $avob != "xgw" -o $avob != "cpsw" ; then
echo "Warning : Write correct vob name, is ! state"
fi
Forums:
Re: bash 프로그래밍 질문입니다. ^^
이부분이 or (-o) 가 아니고 and (-a) 여야 맞습니다.
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
Re: bash 프로그래밍 질문입니다. ^^
-z는 값이 빈 문자열인지 (-n은 뭔가 있는지) 검사하고, =, !=는 두 문자열을 비교합니다. 만약 avob에 빈 값이 들어가면 test $avob = "xgw"는 test = "xgw"와 같이 펼쳐지기 때문에 인자가 부족하다고 나옵니다. !=의 경우도 마찬가지고. -z(또는 -n)으로 먼저 검사한 후에 =나 != 하는 경우는 당연히 빈 값이 아니기 때문에 동작을 하는 거겠죠.
변수 값에 공백이 들어가거나 비어있을 수 있는 경우에는 다음과 같이 따옴표(")로 묶어주어야 합니다:
댓글 달기