我意识到“=”和“==”运算符都可以在 if 语句中使用。例如:
var="some string"
if [ "$var" == "some string" ];then
#doing something
fi
if [ "$var" = "some string" ];then
#doing something
fi
上面的 if 语句在 bash 和 sh 中都运行良好。我只是想知道他们之间有什么区别吗?谢谢...
在用于条件测试的单括号内(即 [ ... ]),所有 shell 都支持单个 =,而某些较旧的 shell 不支持 as ==。
在条件测试的双括号内(即 [[ ... ]]),新旧 shell 没有区别。
编辑:我还应该注意:如果可能,请始终使用双括号 [[ ... ]],因为它比单括号更安全。我将通过以下示例来说明原因:
if [ $var == "hello" ]; then
如果 $var 恰好为 null / 空,那么脚本会看到以下内容:
if [ == "hello" ]; then
这会破坏你的脚本。解决方案是使用双括号,或者始终记住在变量两边加上引号(“$var”)。双括号是更好的防御性编码实践。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)