unix 测试何时在测试命令中使用 eq vs = vs ==?

Mic*_*ant 26 shell test

我什么时候应该使用-eqvs =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 一致性的测试命令一起使用。