有时候我们使用管道的时候还需要获取管道前的命令执行状态,默认使用 $?
只能取到最后一个命令的退出状态。
如果使用管道以后就不行了。
cmd1 | cmd2 | cmd3
在 PIPESTATUS
特殊数组中提供了退出代码。 cmd1 退出代码在 ${PIPESTATUS[0]}
中,cmd3 退出代码在 ${PIPESTATUS[2]}
中,因此 $?
总是与 ${PIPESTATUS: -1}
相同。
通过上述方法可以获取 cmd1 的状态了。
举例:
fff | wc -l
echo "fff 执行结束,退出状态为 ${PIPESTATUS[0]}"
这篇文章还没有人留言,快来抢沙发吧。