链接 && 和 || 在壳中

Hea*_*ray -4 shell bash

为什么这不能按预期工作?

$ false &&   { echo ok;  echo ok; } && { echo notOK; }
Run Code Online (Sandbox Code Playgroud)

而这不是:

$ false &&   { echo ok;  echo ok; } || { echo notOK; }
Run Code Online (Sandbox Code Playgroud)

我没看到!

ash*_*ash 7

这就是方法&&||工作。

&& 如果左侧以“真”值 (0) 结束,则执行右侧。

|| 如果左侧以“假”值(!0)结束,则执行右侧。

false && { echo ok; echo ok } || { echo notOK; }
Run Code Online (Sandbox Code Playgroud)

是这样处理的:

  • false 返回 1
  • &&不执行`{ echo ok; echo ok }' 因为左侧不是 0
  • ||确实执行,{ echo notOK; }因为左侧不是 0