2009-12-12 3 views
0

안녕 모두,쉘에서 null 값을 감지하는 방법은 무엇입니까?

나는이 코드를 썼지 만 두 변수가 null 인 것을 잡아 내지 못했다. 왜 그런가? 문 바로 작동해야하는 경우 있도록

echo "$var1 - $var2" 

if [ "$var1" == ""] || [ "$var2" == ""] 
then 
    echo "Incomplete data" 
    exit 1 
fi 

변수의 초기 에코 인쇄 아무것도

나는 나의 스크립트를 실행할 때? 그러나 그것은 어떤 이유로는 아닙니다.

+1

를 사용할 수 있습니다. 와우! – goe

+0

당신은 어느 쪽 쉘을 쓰고 있습니까? Bourne 쉘 또는 이식성을위한 Bash? –

답변

0

||은 쉘에서 다른 의미를가집니다. 또한 ==은 비교를 위해 사용되지 않습니다. =입니다. 어쩌면 당신은 의미 :

if [ -z "$var1" -o -z "$var2" ] 

는 맨 페이지에서 인용 : 당신이 ==을 사용하고 있고 Bourne 씨는이 없기 때문에 당신이 배쉬 스크립트를 작성하는 것처럼

 
EXPRESSION1 -o EXPRESSION2 
       either EXPRESSION1 or EXPRESSION2 is true 

-z STRING 
       the length of STRING is zero 
+0

감사합니다.하지만이 경우에는 그렇지 않았습니다. – goe

2

이 보이는 내가 올바르게 기억 .

나는 당신의 문제는 괄호 전에 공간 부족 때문이라고 이해하지만 당신은 당신의 if 보면 다음과 같이해야한다 :

if [[ "$var1" == "" || "$var2" == "" ]] 

더 빨리 실행보다 다른 이유가있는 경우. 그러나 이중 대괄호는 또한 additional capabilities을 구입합니다.

0

당신은 실제로 문제가 ""와 닫는] 사이에 공간이 없다는 것을이었다 케이스/ESAC

case "$var1$var2" in "") echo "null";; esac 
관련 문제