使用“if condition then”和仅使用“condition && {}”有什么区别

使用“if condition then”和仅使用“condition && {}”有什么区别

我只是想知道编写以下 bash 是否有任何实际区别:

if [ <some condition> ]; then
  <some statement>
fi

以及以下内容:

[ <some condition> ] && {
  <some statement>
}

其执行方式有什么不同,或者它们是等效的吗?

答案1

在这一点上没有太多逻辑或语言差异。但如果您要将其扩展为更大的内容,则详细语法 将为添加s 和if提供更多空间。如果你坚持使用逻辑运算符,那么阅读起来就会困难得多。自己尝试一下。elifelse

例如,使用&&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 有支持。

相关内容