2013-02-17 57 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得到你想要的結果...

相關問題