Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bash字符串相等_Bash_Equals_Equality - Fatal编程技术网

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中==不起作用。