似乎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
,以便我不必将它分别捕获到每个函数中?
答案 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
在脚本开头的应该使它按预期工作。