尝试/捕获:触发bash错误的URL

时间:2016-02-11 14:16:14

标签: bash error-handling sh

我会在bash脚本中有一个像try / catch这样的东西(如果出现问题我想触发一个URL)。像这样:

  1. 执行任务1
  2. 执行任务2
  3. ...
  4. 执行任务99
  5. 如果此任务中的任何一项失败,请停止脚本(如果任务4失败,则不执行任务> = 5)然后触发URL(使用curl或其他任何内容)
  6. 我知道set -e存在,但它只是停止了脚本(它完成了半个工作)。也许有trap的东西,但我不明白我读到的内容。 这个案例有什么简单的例子吗?

    我的问题显然不是关于触发URL,而是如何捕获错误然后运行脚本的其他部分。

2 个答案:

答案 0 :(得分:3)

trap trap_exit EXIT
trap_exit() {
  CODE=$?
  if [ $CODE -ne 0 ]; then
    echo "Failed! Return code: $CODE"
  fi
}

每当脚本结束时(trap_exit参数),这将执行EXIT并检查是否有某些内容($?部分)。

答案 1 :(得分:3)

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

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