使用另一个命令通过管道传输时如何读取命令的返回码[重复]
Posted
技术标签:
【中文标题】使用另一个命令通过管道传输时如何读取命令的返回码[重复]【英文标题】:How to read return code of command when piped with another command [duplicate] 【发布时间】:2021-09-01 05:07:23 【问题描述】:我有一个 bash 脚本,我在其中执行一个命令和 tee
到一个文件。
检查返回码时,总是0
用于tee <>
命令。
make all | tee output.log
if [[ $? -ne 0 ]]; then
echo "Make failed"
exit 1
else
blah blah
fi
有没有办法检查第一个命令的返回码(在这种情况下是make all
)?
【问题讨论】:
【参考方案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
【讨论】:
【参考方案2】:假设您有命令管道command1 | command2
,您可以通过以下方式获取每个命令退出代码:
echo "$PIPESTATUS[0] - $PIPESTATUS[1]"
【讨论】:
以上是关于使用另一个命令通过管道传输时如何读取命令的返回码[重复]的主要内容,如果未能解决你的问题,请参考以下文章