我正在使用$ PIPESTATUS打印每个管道命令的退出代码。我现在知道管道是并行运行的,但是一旦退出代码为<> 0,如何使脚本退出而不是继续执行下一个命令?谢谢。
我不能将set -e放在顶部,因为一旦检测到错误,脚本就会退出,但是不会显示$ PIPESTATUS,因为该echo命令位于管道中任何失败的命令之后。
答案 0 :(得分:3)
set -o pipefail
true | false | true || { declare -p PIPESTATUS; exit; }
echo "whoops"
输出:
declare -a PIPESTATUS=([0]="0" [1]="1" [2]="0")
pipefail
如果设置,则管道的返回值是 最后一个(最右边)命令以非零状态退出,如果为零,则退出 管道中的所有命令均成功退出。这个选项是 默认情况下处于禁用状态。