如何在与另一个命令管道连接时读取命令的返回代码



我有一个bash脚本,在其中我执行一个命令并将tee传递到一个文件。在检查返回代码时,始终是0,用于tee <>命令。

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

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

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

echo "${PIPESTATUS[0]} - ${PIPESTATUS[1]}"
if make all | tee output.log
then
echo Could not write create output.log
exit 2
elif (( ${PIPESTATUS[0]} > 0 ))
then
echo Make failed
exit 1
else
echo Looks great
...
fi

相关内容

  • 没有找到相关文章

最新更新