bash字符串相等
在bash字符串相等,bash,equals,equality,Bash,Equals,Equality,在bash中,equal和double-equal测试操作符之间有什么区别(如果有) [[ "a" = "a" ]] && echo equal || echo not-equal [[ "a" == "a" ]] && echo equal || echo not-equal [[ "a" = "b" ]] && echo equal || echo not-equal [[ "a" == "b" ]] && echo equal
bash
中,equal和double-equal测试操作符之间有什么区别(如果有)
[[ "a" = "a" ]] && echo equal || echo not-equal
[[ "a" == "a" ]] && echo equal || echo not-equal
[[ "a" = "b" ]] && echo equal || echo not-equal
[[ "a" == "b" ]] && echo equal || echo not-equal
结果:
equal
equal
not-equal
not-equal
没有区别,
=
是=
的同义词(我想对于C/C++人来说)。例如,见
您可以通过查看解析代码中的某个地方来仔细检查,以确定是否确实存在,或者只是出于您的兴趣,但我无法立即找到它。字符串比较没有区别,但您不能在
(())中使用=
进行数值比较。
(您必须在(())中使用=
)
或-eq
中的[]
,测试
或[[]]
。请参阅我的答案。值得注意的是==是在bash中引入的,但bourne shell不支持它。在某些系统中,您会注意到/bin/sh实际上是bash,而在其他系统中,它是bourne。当shell脚本在多个系统上正常工作,但在一个系统上失败时,我遇到了这个问题。在bou中,==不受支持rne是它在一个上失败的原因。注意,在ksh中,如果你检查语法,你会得到一个使用single=语法的折旧警告。警告:第3行:'='过时,使用'=='
在BASH中没有区别。=
不能在所有shell中工作,因此不可移植。首选=
。正如@mak指出的那样,==在所有shell中都不工作在shell中,我确认在Ubuntu 16.04中==不起作用。