全部,
我编写了这段代码,但它没有捕获到两个变量中的任何一个为空,为什么?
echo "$var1 - $var2"
if [ "$var1" == ""] || [ "$var2" == ""]
then
echo "Incomplete data"
exit 1
fi
当我运行脚本时,初始echo不会为变量打印任何内容,因此if语句应该正常工作?但它不是出于某种原因。
答案 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