我什么时候应该使用-eq
vs =
vs==
例如
[[ $num -eq 0 ]]
[[ $num = 'zzz' ]]
Run Code Online (Sandbox Code Playgroud)
我观察到对数字和字符串使用-eq
(和-ne
等)的模式=
。有没有原因,我应该什么时候使用==
cuo*_*glm 29
因为那是这些操作数的定义。来自POSIX 测试文档,操作数部分:
s1 = s2
如果字符串 s1 和 s2 相同,则为真;否则为假。
...
n1 -eq n2
如果整数 n1 和 n2 在代数上相等,则为真;否则为假。
==
不是由 POSIX 定义的,它是 的扩展bash
,派生自ksh
. ==
当你想要便携性时,你不应该使用。来自bash 文档 - Bash 条件表达式:
字符串 1 == 字符串 2
字符串 1 = 字符串 2
如果字符串相等,则为真。'=' 应该与 POSIX 一致性的测试命令一起使用。