ksh 和函数调用的条件列表,如 fun1 && fun2

ksh and a conditional list of function calls like fun1 && fun2

我完全被这个困住了

#!/bin/ksh

function one {
  echo one
  return 0
}

function two {
  echo two
  return 0
}

one && two

它打印

one
two

为什么?我希望永远不会调用两个,因为一个 returns 0 ($? -eq 0 !) 我做错了什么?

我希望这是一个平庸的错误。

关于:

I hope it is a banal mistake.

有时,您的希望成真:-)

零是成功return代码。如果要指示失败,则需要 return 一个非零值。

对于 kshman 页面(这类似于 bash,可能还有其他 shell),我们看到:

cmd1 && cmd2 executes cmd2 only if the exit status of cmd1 is zero;

您实际上可以通过 运行 true ; echo $? 看到这一点 - 您应该得到一个零值。