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

似乎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] 举报,一经查实,本站将立刻删除。

相关推荐