我有一个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