我只是想知道编写以下 bash 是否有任何实际区别:
if [ <some condition> ]; then
<some statement>
fi
以及以下内容:
[ <some condition> ] && {
<some statement>
}
其执行方式有什么不同,或者它们是等效的吗?
答案1
在这一点上没有太多逻辑或语言差异。但如果您要将其扩展为更大的内容,则详细语法 将为添加s 和if
提供更多空间。如果你坚持使用逻辑运算符,那么阅读起来就会困难得多。自己尝试一下。elif
else
例如,使用&&
and/or重写以下内容||
。
if [ 1 -eq 2 ]; then echo ok; elif [ 1 -eq 1 ]; then echo lif; else echo el; fi
答案2
基本上,它们是等价的。在这两种情况下,仅当条件为真时才执行语句。
这是风格上的差异,我更喜欢第一种选择。
答案3
并非所有 shell 都支持:
[ <some condition> ] && {
<some statement>
}
某些 shell 通过 /usr/bin/[ 中的可执行文件来支持它。
要测试您的 shell 是否正在使用 /usr/bin/[ 只需执行以下操作:
$ builtin [
sh: 1: builtin: not found
这意味着 shell 正在使用 /usr/bin/[,但如果你得到其他东西,你的 shell 支持它......
但 bash 有支持。