如果使用三通,如何检查退出?

我尝试使用tee将输出保存为文件,如:

myapp | tee log.txt 

但是我在检查退出时遇到问题。 前面的代码:

 myapp if [ $? -eq 0 ] then ..... 

但$? 将是T恤的退出! 有没有可能赶上myapp的退出? 谢谢。

对于bash,有一个方便的特殊数组:PIPESTATUS。 myapp的返回码在$ {PIPESTATUS [0]}中,依此类推。

zsh有一个大致相同的方法。

在严格的bourne shell中,也可以使用comp.unix.shell常见问题解答 ,这也是一种非常恼人的方法。

使用PIPESTATUS

 myapp | tee log.txt if [ $PIPESTATUS[0] -eq 0 ] then ..... 

您可以将输出重定向到文件:

 $ myapp > log.txt