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
,这样我就不必在每个函数中单独捕获它了?
最佳答案
默认情况下,ERR
陷阱不会被 shell 函数继承。
引用自 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
在脚本的开头应使其按预期工作。
关于linux - 如何在全局范围内捕获 bash 中的 on_error?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21776575/