2013-06-12 40 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