2013-06-12 50 views
4

當bash中的命令返回1的退出代碼時,如何觸發函數?我知道頂部的set -e只會讓我的代碼終止,但我想先調用這個函數。如果代碼運行正常,我希望它在沒有調用函數的情況下正常退出。我不想在每行之後執行$?檢查。我相信有一個簡單的方法可以做到這一點,但我是bash腳本編寫新手,所以我不知道它是否正確。在bash腳本中發生錯誤時觸發函數

回答

3

坐落在ERR pseudosignal陷阱:

set -e 
error_handler() { 
    # do stuff here 
} 

trap error_handler ERR 
+0

所以ERR pseudosignal被轟出了1退出狀態是從失敗的命令返回的任何時間呢? – Kvass

+0

幾乎任何時間。有一些例外是有意義的(例如,如果失敗的命令不是'&&'或'||'列表中的最後一個命令)。 – chepner

+0

明白了,謝謝! – Kvass