有没有这样的限制:
-eq: 适用于或偏向于 "数字相等"
= : 选用于或偏向于 "字符串相等"
我之前写 shell script 时在这个地方出过错, 一直没有弄明白.
RTFM
$ man test
STRING1 = STRING2 the strings are equal STRING1 != STRING2 the strings are not equal INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2
尽量使用 extended test 吧,即 [[ ]]
,里面可以使用比较习惯的 ==
代替 =
,并且不用担心 word spliting 和 filename expansion.
准确来说是适用对象不同:-eq
和 =
都可以用来条件测试进行判断两个操作对象是否相同,但是有如下区别:-eq
适用于整数数字,不能进行字符串的条件测试=
既适用于数字,又适用于字符串。
我做了下测试:
bash
$ [ 1 -eq 1 ] && echo "ok" ok $ [ 1 = 1 ] && echo "ok" ok $ [ "a" -eq "a" ] && echo "ok" sh: [: a: 需要整数表达式 $ [ "a" = "a" ] && echo "ok" ok
楼主想进一步了解的话可以搜索下"shell 条件测试"