ibr*_*him 2 linux bash shell operators
我意识到'='和'=='运算符都适用于if语句.例如:
var="some string"
if [ "$var" == "some string" ];then
#doing something
fi
if [ "$var" = "some string" ];then
#doing something
fi
Run Code Online (Sandbox Code Playgroud)
上面的if语句都适用于bash和sh.我只是想知道它们之间是否有任何区别?谢谢...
在条件测试的单个括号内(即[...]),所有shell都支持single =,而某些较旧的shell不支持==.
在条件测试的双括号内(即[[...]]),旧壳或新壳没有区别.
编辑:我还应该注意:如果可能的话,始终使用双括号[[...]],因为它比单个括号更安全.我将通过以下示例说明原因:
if [ $var == "hello" ]; then
Run Code Online (Sandbox Code Playgroud)
如果$ var恰好是null/empty,那么这就是脚本看到的内容:
if [ == "hello" ]; then
Run Code Online (Sandbox Code Playgroud)
这将打破你的脚本.解决方案是使用双括号,或者始终记住在变量周围加上引号("$ var").双括号是更好的防御性编码实践.