Try/catch 赞:在 bash 错误时触发 URL
Try/catch like: trigger URL on bash error
我会在 bash 脚本中使用类似大 try/catch 的东西(如果出现问题,我想触发 URL)。像这样:
- 执行任务 1
- 做任务 2
- ...
- 完成任务 99
- 如果此任务中的任何一个失败,停止脚本(如果任务 4 失败则不执行任务 >= 5)然后触发 URL(使用 curl 或其他)
我知道 set -e
存在,但它只是停止脚本(它完成了一半的工作)。也许 trap
有什么问题,但我不明白我读到的内容。 这个案例有什么简单的例子吗?
我的问题显然不是关于触发 URL,而是如何捕获错误然后 运行 脚本的另一部分。
trap trap_exit EXIT
trap_exit() {
CODE=$?
if [ $CODE -ne 0 ]; then
echo "Failed! Return code: $CODE"
fi
}
这将在您的脚本结束时执行 trap_exit
(EXIT
参数)并检查是否有问题($?
部分)。
使用set -e
,如果脚本因错误退出,您可以捕获ERR
伪信号并执行您的curl
语句。如果所有任务都成功,则不会触发ERR
陷阱。
set -e
trap on_error ERR
on_error () {
curl $some_url
}
task_1
task_2
# ...
task_last
我会在 bash 脚本中使用类似大 try/catch 的东西(如果出现问题,我想触发 URL)。像这样:
- 执行任务 1
- 做任务 2
- ...
- 完成任务 99
- 如果此任务中的任何一个失败,停止脚本(如果任务 4 失败则不执行任务 >= 5)然后触发 URL(使用 curl 或其他)
我知道 set -e
存在,但它只是停止脚本(它完成了一半的工作)。也许 trap
有什么问题,但我不明白我读到的内容。 这个案例有什么简单的例子吗?
我的问题显然不是关于触发 URL,而是如何捕获错误然后 运行 脚本的另一部分。
trap trap_exit EXIT
trap_exit() {
CODE=$?
if [ $CODE -ne 0 ]; then
echo "Failed! Return code: $CODE"
fi
}
这将在您的脚本结束时执行 trap_exit
(EXIT
参数)并检查是否有问题($?
部分)。
使用set -e
,如果脚本因错误退出,您可以捕获ERR
伪信号并执行您的curl
语句。如果所有任务都成功,则不会触发ERR
陷阱。
set -e
trap on_error ERR
on_error () {
curl $some_url
}
task_1
task_2
# ...
task_last