我想测试多个变量以查看它们是否为空。所以我做了以下事情:
if [ test -z "$VAR1" ] || [ test -z "$VAR2" ]
then
echo "Empty!"
fi
Run Code Online (Sandbox Code Playgroud)
然而,这不起作用。输出是:
[: -z: binary operator expected
[: -z: binary operator expected
Run Code Online (Sandbox Code Playgroud)
我做错了什么?如果我省略OR (||) 条件,上面的代码就可以正常工作。
使用括号或test命令,不要同时使用。以下任一方法都可以:
if [ -z "$VAR1" ] || [ -z "$VAR2" ]
then
echo "Empty!"
fi
Run Code Online (Sandbox Code Playgroud)
或者:
if test -z "$VAR1" || test -z "$VAR2"
then
echo "Empty!"
fi
Run Code Online (Sandbox Code Playgroud)
在一些旧的 shell 中[只是test命令的别名。你甚至可能错过结束](或在之后添加test),一切都会好起来的。如今,bash这会给出语法错误。然而,这两种(正确的)语法在功能上仍然是等效的,并且可以互换使用,但不能同时使用。