Bash 如何测试空字符串的多个变量

Bash 如何测试空字符串的多个变量,bash,sh,Bash,Sh,我想测试多个变量,看看它们是否为空。因此,我做了以下工作: if [ test -z "$VAR1" ] || [ test -z "$VAR2" ] then echo "Empty!" fi 但是,它不起作用。输出为: [: -z: binary operator expected [: -z: binary operator expected 我做错了什么?如果我省略了OR | |条件,上面的代码就可以正常工作。您应该使用test或[;它们是同义词,除了[需要]作为最后一个参数

我想测试多个变量,看看它们是否为空。因此,我做了以下工作:

if [ test -z "$VAR1" ] || [ test -z "$VAR2" ]
then
   echo "Empty!"
fi
但是,它不起作用。输出为:

[: -z: binary operator expected
[: -z: binary operator expected
我做错了什么?如果我省略了OR | |条件,上面的代码就可以正常工作。

您应该使用test或[;它们是同义词,除了[需要]作为最后一个参数

[ -z "$VAR1" ] || [ -z "$VAR2" ]

您应该使用test或[;它们是同义词,但[需要]作为最后一个参数除外

[ -z "$VAR1" ] || [ -z "$VAR2" ]


使用方括号或test命令,不要同时使用这两个命令。以下任一项都可以使用:

if [ -z "$VAR1" ] || [ -z "$VAR2" ]
then
   echo "Empty!"
fi
或:


在一些旧的shell中[只是test命令的别名。您甚至可能错过结束语]或者在测试后添加它,一切都会好起来。现在,在bash上,这将给出一个语法错误。但是,两个正确的语法在功能上仍然是等价的,可以互换使用,但不能同时使用。

使用方括号或test命令,不要同时使用这两个命令。以下任一选项都可以工作:

if [ -z "$VAR1" ] || [ -z "$VAR2" ]
then
   echo "Empty!"
fi
或:

在一些较旧的shell中[只是test命令的别名。您甚至可能错过结束符]或在测试后添加它,一切都会好起来。现在,在bash上,这将产生语法错误。但是,这两个正确的语法在功能上仍然是等价的,可以互换使用,但不能同时使用。

[[-z$VAR1 | | |-z$VAR2]];然后…fi应该在bash[is-test中工作,而不是if语句语法的一部分。键入help[并在提示下进行帮助测试以获取更多信息。如果[-z$VAR1 | |-z$VAR2]];那么…fi应该在bash[is-test中工作,而不是if语句语法的一部分。键入help[并在提示下进行帮助测试以获取更多信息。