如何在全局中捕获bash中的on_error?

时间:2014-02-14 10:17:55

标签: linux bash shell error-handling bash-trap

似乎Bash中的on_error陷阱仅在其定义的函数范围内起作用。例如运行此脚本

#!/bin/bash

on_error() {
    echo 'on_error'
}

f() {
    false
    echo 'function f'
}

g() {
    trap on_error ERR
    echo 'function g'
    false
    f
}

g

产生

function g
on_error
function f

有没有办法在全局范围内捕获on_error,以便我不必将它分别捕获到每个函数中?

1 个答案:

答案 0 :(得分:7)

默认情况下,shell函数不会继承ERR陷阱。

引自help set

  -E  If set, the ERR trap is inherited by shell functions.

  -o option-name
      Set the variable corresponding to option-name:
          errtrace     same as -E

set -o errtrace
在脚本开头的

应该使它按预期工作。