2013-02-17 58 views
3

这里是我想要达到一个例子:有没有办法在管道命令中发现失败?

#!/bin/bash 
set -e # abort if error 
... 
command1 2>&1 | command2 
... 

而且我注意到,有时command1失败,但命令2不和shell脚本高高兴兴地继续...... 如果我没有使用管这里,set -e已经足够,但现在它不适用于那里的管道...

任何想法? 感谢

+1

直到第一个已完成的解决方案延缓了第二个命令行的处理和用途临时文件及其开销。 在我的情况下不理想。我希望管道命令能够完成他们的工作,并且只有当他们中的一个碰巧返回错误时才会失败。使用临时文件在以前的通讯的输出可能变得非常庞大时会更成问题... – revit09 2013-02-17 16:52:11

回答

6

既然你正在使用bash,比set -e其他的你还可以添加set -o pipefail得到你想要的结果...

相关问题