如果这是重复的帖子,我们深表歉意。我确实尝试过搜索,看看是否有人已经问过/回答过这个问题,但没有找到任何东西。
||在 bash中是什么意思?例如,在研究解决驱动程序问题的步骤时,我遇到了以下命令:
modprobe -q vmxnet3 && echo "vmxnet3 installed" || echo "vmxnet3 not installed"
我知道第一部分是查询 modprobe 并返回“已安装 vmxnet3”的响应,如果它收到成功的返回代码......但是......最后一部分在做什么?
Jac*_*nor 18
||是 OR 运算符。只有当左边的命令返回错误时,它才会执行右边的命令。请参阅混淆使用 && 和 || 运营商。
我认为你的例子不是正确的bash。右侧的(这是固定的。)||部分缺少echo命令。
mdp*_*dpc 10
这是一个“或”条件。
对于一个简化的例子,让我们看看
cmd1 || cmd2
Run Code Online (Sandbox Code Playgroud)
发生的情况是,如果 cmd1 成功(即退出代码 0),则不会执行 cmd2。仅当 cmd1 失败时才会执行 cmd2。
这是返回退出代码如此重要的原因之一。
顺便说一句,此功能存在于非常旧的 UNIX shell 中,因为旧的 sh 中没有 IF 语句。这当然是在 csh 出现之前。
就像&&,||是一个 bash控制操作符:
&&表示仅当前面的语句成功执行(返回退出代码零)时才执行后面的语句。
||表示仅当前一条语句失败(返回非零退出代码)时才执行后面的语句。
其他一些控制运算符是:
& 表示在后台执行前面的语句。
; 表示执行前一条语句,完成后继续执行下一条语句。
| 意味着执行前面的语句并将其标准输出连接到后面语句的标准输入。
&&和||&&并且||可以组合起来以替代 if-then-else。考虑:
if some_command
then
echo yes
else
echo no
fi
Run Code Online (Sandbox Code Playgroud)
以上类似于:
some_command && echo yes || echo no
Run Code Online (Sandbox Code Playgroud)
我说“相似”而不是相同,因为在echo yes命令失败的情况下两者是不同的。如果echo yes命令失败(以非零返回码退出),则echo no执行该命令。if-then-else-fi版本不会发生这种情况。echo但是,只有在终端上出现写入错误时,该命令才会失败。因此,这种差异很少重要,并且&&和||形式通常用作捷径。
| 归档时间: |
|
| 查看次数: |
46120 次 |
| 最近记录: |