如何在shell中检测空值?

时间:2009-12-12 18:06:47

标签: shell unix

全部,

我编写了这段代码,但它没有捕获到两个变量中的任何一个为空,为什么?

echo "$var1 - $var2"

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

当我运行脚本时,初始echo不会为变量打印任何内容,因此if语句应该正常工作?但它不是出于某种原因。

3 个答案:

答案 0 :(得分:2)

看起来你正在编写一个Bash脚本,因为你正在使用==而如果我没记错的话,Bourne就没有。

我了解您的问题是由于括号前缺少空格,但您应该使if看起来像这样:

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

如果没有其他原因,它执行得更快。但是,双方括号也会给你additional capabilities

答案 1 :(得分:0)

||在shell中有不同的含义。 ==也不用于比较; =是。也许你的意思是:

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

从联机帮助页面引用:

EXPRESSION1 -o EXPRESSION2
              either EXPRESSION1 or EXPRESSION2 is true

-z STRING
              the length of STRING is zero

答案 2 :(得分:0)

你可以使用case / esac

case "$var1$var2" in "" ) echo "null";; esac