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

oak*_*208 3 bash shell

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

make all | tee output.log
if [[ $? -ne 0 ]]; then
    echo "Make failed"
    exit 1
else
    blah blah
fi
Run Code Online (Sandbox Code Playgroud)

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

Ant*_*cca 6

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

echo "${PIPESTATUS[0]} - ${PIPESTATUS[1]}"
Run Code Online (Sandbox Code Playgroud)