以下UNIX代码的输出是什么?

时间:2018-07-30 16:33:50

标签: linux unix

a=x b=x
 If [ $a -eq $b ]
 Then
 echo "a is equal to b"
 else
 echo "a is not equal to b"
fi

上面的代码会成功输出“ a等于b”还是会有一些错误?

2 个答案:

答案 0 :(得分:0)

-eq用于整数比较,但是您正在比较字符串。使用=(或bash-ism ==):

[ "$a" = "$b" ]

像我一样,引用变量扩展名以防止单词拆分和路径名扩展。

答案 1 :(得分:0)

查看脚本时,使用test命令的单括号版本。这与双括号版本的shell内部测试相反。

test命令指出:

  

INTEGER1 -eq INTEGER2 INTEGER1等于INTEGER2

但是您不是在比较整数,而是字符串(除非x可能是虚拟名称,而可能是整数)。因此,test将失败。

$ [ x -eq x ]
[: integer expression expected: x

因此您的输出将显示为a is not equal to b

如果要比较字符串,建议使用运算符 =

  

STRING1 = STRING2字符串相等