2013-03-20 50 views
2

因此,我試圖使用PV爲各種命令(即.tar)創建進度條。我正在ruby腳本中運行這些命令。問題是,因爲pv是管道鏈中的最後一個命令,所以它正在吸收所有的錯誤。如何獲取通過「pv」命令傳遞的命令的錯誤輸出

即。

result = `tar -cpz testDir 2>&1 | pv -pterb > testTar.tar.gz` 

如果下面的命令失敗(即在目錄中的空間不足,因爲它被pv命令吸收),它將不會返回任何錯誤。有任何想法嗎?

回答

1

對,通常是最後的命令。您需要pipefail選項。

$ sh -c '     false | true'; echo $? 
0 
$ sh -c 'set -o pipefail; false | true'; echo $? 
1 

有純粹的Posix複製pipefail沒有簡單的方法,但我注意到,bash和一般真到Posix的dash(1)並實現它。

+0

非常感謝。這解決了我的問題。 – Robin 2013-03-21 22:35:06

相關問題