使用该命令的步骤是什么; ||和&&

使用该命令的步骤是什么; ||和&&

注意:ABC 是命令......

请告诉我这些命令的步骤过程是什么,以便我可以更好地理解该语言。

A || B ; C = If A fails then run B then C?
A ; B || C = Run A then B then C if (B fails... or is it if A fails?)?

我真正想要的是这样的(但想了解上面的步骤):

如果 A 失败,则运行 B,但如果 A 成功,则跳过 B 然后运行 ​​C、d、e 等(如何使用“||”、“;”和/或“&&”执行此操作?)

我从这个链接找到了信息,但它只显示了2个命令的步骤,而不是3个......https://askubuntu.com/questions/334994/which-one-is-better-using-or-to-execute-multiple-commands-in-one-line

另一个链接没有回答这个问题的原因:

所以,下次如果你需要链接 4 个命令,你会问一个新问题,因为这里的答案只显示 3 个命令如何工作? – don_crissti26 分钟前

不,先生,因为我会理解未来的语言下一步:)。主要是因为这个......:我不清楚命令和开关(?)“||”按顺序(在本例中为命令C)是否始终查看命令(A)或者是否正在查看命令(B) )。这主要是因为我对有人这样说感到困惑:A || B = 如果 A 失败则运行 B.. 不确定下一个命令(C、D 等)是否也会查看 A :)(呃,看起来就是这样,但我不知道这种语言..所以必须弄清楚)。

答案1

A || B ; C

如果 A 以非零状态退出,则运行 B。C 无条件运行

A ; B || C

运行 A。然后运行 ​​B。如果 B 以非零状态退出,则运行 C


切向地,你有时会看到A && B || C.这通常是作为 的简写if A; then B; else C; fi。然而,有一个主要区别:

A && B || C
  • 如果A失败,则运行C
  • 如果A成功,则运行B。
    • 如果 B 失败,则运行 C
if A; then B; else C; fi
  • 如果A失败,则运行C
  • 如果A成功,则运行B。
    • 如果 B 失败,则不执行 C

演示:

$ (echo A; exit 0) && (echo B; exit 1) || (echo C; exit 2); echo $?
A
B
C
2     # <== the exit status of C

$ if (echo A; exit 0); then (echo B; exit 1); else (echo C; exit 2); fi; echo $?
A
B
1     # <== the exit status of B

答案2

一个简单的测试

(echo -n "hello" || echo -n "world") && echo "!"

产生“你好!”

或者(使陈述 A 为假)

( false || echo -n "world") && echo "!"

产生“世界!”

OR 运算符是惰性的,因此如果 A 在 (A || B) 中为 true,则永远不会计算 B,因为 True OR True == True 和 True OR False == True

相关内容