使用另一个命令进行管道传输时如何读取命令的返回码

我有一个 bash 脚本,用于执行命令和tee文件。在检查返回码时,它总是0用于tee <>命令。

make all | tee output.log
if [[ $? -ne 0 ]]; then
    echo "Make failed"
    exit 1
else
    blah blah
fi

有没有办法检查第一个命令的返回码(即 make all在这种情况下)?

回答

假设您有命令 pipe command1 | command2,您可以通过以下方式获取每个命令退出代码:

echo "${PIPESTATUS[0]} - ${PIPESTATUS[1]}"


以上是使用另一个命令进行管道传输时如何读取命令的返回码的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>