我想运行一个脚本,使用 apache 服务器创建并托管一个网站。如果出现任何问题,我必须回滚我所做的所有更改,例如删除创建的文件夹等。
我知道set -e
在检测到错误时退出脚本。
但我需要的是运行脚本,比如 rollback.sh,同时检测到错误而不是退出
答案1
在脚本中,您可以使用trap
:
err_handler () {
/path/to/error/handling/script.sh
exit
}
trap err_handler ERR
由于ERR
被捕获,如果任何命令以非零退出代码退出,则err_handler
函数将运行。
你可以认为set -e
这样做:
trap 'exit $?' ERR