使用另一个命令进行管道传输时如何读取命令的返回码
我有一个 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]}"