bash或sh中的'='运算符和'=='运算符之间有什么区别吗



我意识到'='和'=='运算符在if语句中工作。例如:

var="some string"
if [ "$var" == "some string" ];then
    #doing something
fi
if [ "$var" = "some string" ];then
    #doing something
fi

如果上面的语句在bash and Sh中都效果很好。我只是想知道它们之间是否有任何区别?谢谢...

在单个支架内进行条件测试(即[...]),单个=所有shell支持,其中==不受某些较旧的外壳的支持。p>在双括号内进行条件测试(即[[...]]),旧或新壳没有区别。

编辑:我还要注意:如果可能的话,请务必使用双括号[[...]],因为它比单个括号更安全。我将用以下示例说明为什么:

if [ $var == "hello" ]; then

如果$ var恰好是空的/空的,那么这就是脚本看到的:

if [ == "hello" ]; then

这将打破您的脚本。解决方案是使用双括号,或者始终记得在变量周围放引号(" $ var")。双括号是更好的防御性编码实践。

它们在算术评估中不同

在双括号内,=不能用于比较,而==工作正常,例如

(( $var == 3 ))工作正常

(( $var = 3 ))给出错误(比较)。

(( var = 3 )) works(分配),但这总是评估为true

相关内容

  • 没有找到相关文章