[:==:意外的运算符,参数太多,二元运算符预期

时间:2017-11-06 16:36:40

标签: linux bash

见下文:

1. 
if [ $var1 == "result" ]
2,3. 
if [ -z $var ]

我在bash 4.4版中遇到了这个警告 有谁知道这个?请详细说明。感谢。

2 个答案:

答案 0 :(得分:2)

尝试:

"$var1" == "result"

并且:

-z "$var1"

当$ var1不存在时,测试不起作用,通过用"""""因此,如果它们不存在,则与空变量

进行比较

答案 1 :(得分:1)

问题在于您的$var包含空格。因此,这些空格将出现在if中,就像它们分离参数/值一样。要解决此问题,请使用"$var",其中所有空格都连接成唯一值。

因此,如果var1绑定到shell中的foo bar,则[ $var1 = "result" ] test(1)内部会扩展为4个参数:foobar=result=是二进制文件,并且每边只需要一个参数(因此您会遇到“太多参数”或“二进制”这样的错误运营商预期“)