似乎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,以便我不必单独将它捕获到每个函数中?
解决方法:
默认情况下,shell函数不会继承ERR陷阱.
从帮助集引用:
-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
在脚本的开头应该使它按预期工作.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。