Try/catch 赞:在 bash 错误时触发 URL

Try/catch like: trigger URL on bash error

我会在 bash 脚本中使用类似大 try/catch 的东西(如果出现问题,我想触发 URL)。像这样:

  1. 执行任务 1
  2. 做任务 2
  3. ...
  4. 完成任务 99
  5. 如果此任务中的任何一个失败,停止脚本(如果任务 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_exitEXIT 参数)并检查是否有问题($? 部分)。

使用set -e,如果脚本因错误退出,您可以捕获ERR 伪信号并执行您的curl 语句。如果所有任务都成功,则不会触发ERR陷阱。

set -e
trap on_error ERR
on_error () {
    curl $some_url
}
task_1
task_2
# ...
task_last