使用 set -o pipelinefail 时确定 Bash 管道中的失败命令

使用 set -o pipelinefail 时确定 Bash 管道中的失败命令

set -o pipefail我像往常一样在脚本中使用。这工作得很好,并且记录如下

curl ... | jq ... | psql ...

但是,有没有办法确定管道中的哪个命令实际上使整个过程失败了?

我正在研究此问题的唯一目的是更简洁的日志记录,但找不到任何相关文档。

答案1

使用PIPESTATUS内置数组:

true | true | false | true | true
declare -p PIPESTATUS
declare -a PIPESTATUS=([0]="0" [1]="0" [2]="1" [3]="0" [4]="0")

相关内容