6
我目前想知道如何對鏈接命令進行錯誤處理。下面就是一個例子來簡單的證明我的問題:在bash腳本中使用鏈接命令(管道)進行錯誤處理?
cat file | gzip >/tmp/test
如果貓失敗(例如因爲文件丟失),的gzip仍然執行和因此最後存儲的退出代碼$?是。 set -e在這種情況下也無濟於事。
我想知道最佳解決方案是什麼?
謝謝!
我目前想知道如何對鏈接命令進行錯誤處理。下面就是一個例子來簡單的證明我的問題:在bash腳本中使用鏈接命令(管道)進行錯誤處理?
cat file | gzip >/tmp/test
如果貓失敗(例如因爲文件丟失),的gzip仍然執行和因此最後存儲的退出代碼$?是。 set -e在這種情況下也無濟於事。
我想知道最佳解決方案是什麼?
謝謝!
試試這個:
trap 'echo "ERR caught"' ERR
set -o pipefail
cat file | gzip >/tmp/test
輸出文件仍將被創建(創建並行完成)和gzip
將運行,但你可以做清理工作。使用${PIPESTATUS[@]}
數組查看發生錯誤的位置。您可以使用$BASH_COMMAND
和$BASH_LINENO
獲取有關錯誤的其他信息。
哇 - 非常酷。我不知道這種可能性。非常感謝! – aurora 2010-12-20 09:07:14
你試過'$ PIPESTATUS'嗎?它應該爲bash工作。 – khachik 2010-12-17 16:11:48
我甚至不知道,這是存在的。謝謝! – aurora 2010-12-20 09:07:49