在Bash脚本中,当发生错误时触发一个函数

5
当Bash命令返回退出码1时,我该如何触发一个函数?我知道在顶部使用set -e会使我的代码直接停止,但我想先调用这个函数。如果代码正常运行,我希望它能正常退出而不调用该函数。我不想在每一行后面都做一个$?检查。我相信有一种简单的方法可以解决这个问题,但我对Bash脚本还不熟悉,不知道该怎么做。
1个回答

3

ERR伪信号上设置一个陷阱:

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

trap error_handler ERR

那么,当一个失败的命令返回1个退出状态时,ERR伪信号就会被触发? - Kvass
几乎任何时候都可以。有一些例外是有道理的(例如,如果失败的命令不是“&&”或“||”列表中的最后一个命令)。 - chepner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接