2012-02-23 59 views
4

我嘗試用發球在保存文件的輸出,如:如何使用T恤檢查出口?

myapp | tee log.txt 

但我有一個退出的檢查的問題。以前的代碼:

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

但是$?將開球的退出!有沒有可能趕上myapp的退出? 謝謝。

回答

5

對於bash,有一個方便的特殊的數組:PIPESTATUS。 myapp的返回碼將位於$ {PIPESTATUS [0]}中,依此類推。

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

還有一種更加煩人的,笨拙的方法來做到這一點,在嚴格的Bourne shell中,你可以在the comp.unix.shell FAQ閱讀。

+0

+1。閱讀[高級Bash腳本指南]中的PIPESTATUS(http://tldp.org/LDP/abs/html/internalvariables.html)。 – 2012-02-23 10:37:53

-1

你可以重定向你的輸出,而不是文件:

$ myapp > log.txt 
4

使用PIPESTATUS

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