|| 是什么意思? bash 中的意思?

|| 是什么意思? bash 中的意思?

如果这是重复的帖子,我们深表歉意。我确实尝试搜索看看是否有人已经问过/回答过这个问题,但没有找到任何东西。

||bash 中的意思是什么?例如,在研究解决驱动程序问题的步骤时,我遇到了以下命令:

modprobe -q vmxnet3 && echo "vmxnet3 installed" || echo "vmxnet3 not installed"

我知道第一部分是查询 modprobe 并返回“vmxnet3 安装”的响应(如果它收到成功的返回代码)...但是...最后一部分在做什么?

答案1

||是或运算符。仅当左侧命令返回错误时,它才执行右侧命令。看&& 和 || 的使用令人困惑运营商

我认为你的例子不是正确的 bash。右侧的部分||缺少echo命令。(这是固定的。)

答案2

就像&&||是一场狂欢控制操作员:

  • &&表示执行后面的语句除非前面的语句执行成功(返回退出代码零)。

  • ||表示执行后面的语句除非前面的语句失败(返回非零退出代码)。

其他一些控制运算符是:

  • &表示在后台执行前面的语句。

  • ;表示执行前面的语句,完成后继续执行下一条语句。

  • |表示执行前面的语句并将其标准输出连接到后面语句的标准输入。

结合&&||

&&可以||组合起来替代 if-then-else。考虑:

if some_command
then
    echo yes
else
    echo no
fi

上面的内容类似于:

some_command && echo yes || echo no

我说“相似”而不是相同,因为在命令失败的情况下两者是不同的echo yes。如果echo yes命令失败(以非零返回代码退出),则echo no执行该命令。该版本不会发生这种情况if-then-else-fiecho但是,只有当终端上出现写入错误时,该命令才会失败。因此,这种差异并不重要,并且&&and||形式经常被用作捷径。

答案3

这是一个“或”条件。

对于一个简化的例子,让我们看看

 cmd1 || cmd2

发生的情况是,如果 cmd1 成功(即退出代码 0),则 cmd2 将不会执行。仅当 cmd1 失败时才会执行 cmd2。

这就是返回退出代码如此重要的原因之一。

顺便说一句,这个功能存在于非常古老的 UNIX shell 中,因为旧的 sh 中没有 IF 语句。这当然是在 csh 存在之前。

相关内容