KSH:-eq和=之间的差异

时间:2014-05-19 19:06:07

标签: ksh

假设我有这个小程序:

until [ "$name" = "$secretname" ]
do
read name
done 

而不是使用=,如果我使用-eq它仍然可以工作。

是否有理由使用" ="超过" -eq"

3 个答案:

答案 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)

-eq is for numbers
= is for strings

Documentation