先我们来看看在shell中如何判断字符串为null
#!/bin/bash
a="a = b"
if [ $a ]
then
echo true
else
echo false
fi
if [ "$a" ]
then
echo true
else
echo false
fi
if [ -z $b ]
then
echo true
else
echo false
fi
if [ -z "$b" ]
then
echo true
else
echo false
fi
由上可以看出来判断字符串是否null,可以用-z 或者 直接 [ $a ] 来判断
但是我们要注意的是,给变量加上引号,这是一个好习惯, 比如 当a=“a = b”的时候,
if [ $a ]
then
echo true
else
echo false
fi
就会给出错误答案。
所以在给变量做test的时候,务必给变量加上引号。
扩展一下, -z 是判断字符串是否为空, -n 是判断字符串不为空, 不要混淆。
如果$string为空的话, [ -n "$string" -o "$a" = "$b" ]可能会在某些版本的Bash中产生错误. 安全的做法是附加一个额外的字符给可能的空变量,
[ "x$string" != x -o "x$a" ="x$b" ] ("x"字符是可以相互抵消的).