假设我有这个小程序:
until [ "$name" = "$secretname" ]
do
read name
done
而不是使用=,如果我使用-eq它仍然可以工作。
是否有理由使用" ="超过" -eq"
答案 0 :(得分:3)
-eq
仅用于比较整数。它会忽略前导零:
$ test 09 -eq 9 && echo match || echo no match
match
如果参数不是整数,它也会报告错误:
$ test abc -eq abc && echo match || echo no match
bash: test: abc: integer expression expected
no match
=
用于比较任意字符串
$ test abc = abc && echo match || echo no match
match
$ test 09 = 9 && echo match || echo no match
no match
答案 1 :(得分:1)
根据我的Ubuntu Linux上的TEST(1)
,
STRING1 = STRING2
the strings are equal
INTEGER1 -eq INTEGER2
INTEGER1 is equal to INTEGER2
因此,使用=
进行字符串比较,使用-eq
进行整数比较。整数比较声音对我来说更有效率,所以如果你实际比较整数,我建议你使用它。否则我怀疑你要将你的字符串解析/散列为整数或类似奇怪的东西。但是,要确切知道,需要进行测试。
答案 2 :(得分:0)