如何检查$ 1和$ 2是否为空?
我正在运行一些传递字符串参数的脚本,如果else语句如下所示我想做:
if [ $1 != '' ] && [ $2 != '' ] then do something.....
但它显示Error too many argument
。 为什么?
尝试使用-z测试:
if [ -z "$1" ] && [ -z "$2" ]
来自man bash
:
-z string True if the length of string is zero.
由于这是标记的bash
,我建议使用扩展的测试构造( [[...]]
) ,并忘记引号:
if [[ -z $1 && -z $2 ]]; then ...
除非你想要sh
/ POSIX兼容性,否则没有理由不使用[[ ]]
。
这也有效,
if [ "$1" == "" && "$2" == ""]; then echo NULL fi
你看到的一个非常频繁的方法是:
if [ "x$var1" == "x" ] && [ "x$var2" == "x" ]; then echo "both variables are null" fi
通常它用于避免意外后果,例如变量未设置。 你会更频繁地看到它被用作if [ "x$var" != "x" ]