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”还是会有一些错误?
答案 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
:字符串相等