如何检查是否使用了tee命令退出?

4

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

myapp | tee log.txt

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

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

但 $? 是 tee 命令的退出状态码!我能否捕获到我的应用程序的退出状态码呢? 谢谢。
3个回答

5
对于bash,有一个方便的特殊数组:PIPESTATUS。 myapp 的返回代码将在 ${PIPESTATUS[0]} 中等等。
zsh 有一个大致相同的方法。
在严格的 Bourne shell 中还有一种更为烦人和 hacky 的方法,您可以在 comp.unix.shell FAQ 中了解到相关内容。

+1. 在高级Bash脚本指南中了解有关PIPESTATUS的内容。 - Fred Foo

3

使用PIPESTATUS命令

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

-1

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

$ myapp > log.txt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接