如何检测shell中的空值?
问题描述:
HI all,如何检测shell中的空值?
我写了这段代码,但它没有捕获任何两个变量为null,为什么?
echo "$var1 - $var2"
if [ "$var1" == ""] || [ "$var2" == ""]
then
echo "Incomplete data"
exit 1
fi
当我运行我的脚本,所以if语句应该正常工作时,初始回显为变量打印什么?但它不是因为某种原因。
答
||
在shell中有不同的含义。另外==
不用于比较; =
是。也许你的意思是:
if [ -z "$var1" -o -z "$var2" ]
的手册页引用:
EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true -z STRING the length of STRING is zero
+0
谢谢,但这不是在这种情况下 – goe 2009-12-12 18:13:46
答
它看起来像你,因为你正在使用==
和Bourne没有写一个bash脚本,如果我没有记错。
我明白你的问题是由于缺乏对括号前空间,但你应该让你的if
这个样子的:
if [[ "$var1" == "" || "$var2" == "" ]]
如果比它的执行速度更快没有其他原因。但是,双方括号也会向您购买additional capabilities。
答
您可以使用情况/ ESAC
case "$var1$var2" in "") echo "null";; esac
其实这个问题是存在的“”闭]之间没有空格。哇! – goe 2009-12-12 18:13:13
你在写什么外壳? Bourne shell的便携性还是Bash? – 2009-12-12 18:22:16