Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在bash中全局捕获_错误?_Linux_Bash_Shell_Error Handling_Bash Trap - Fatal编程技术网

Linux 如何在bash中全局捕获_错误?

Linux 如何在bash中全局捕获_错误?,linux,bash,shell,error-handling,bash-trap,Linux,Bash,Shell,Error Handling,Bash Trap,Bash中的trap似乎只在其定义的函数范围内工作。例如,运行这个脚本 #!/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 是否有一种全局捕获错误的方法,这

Bash中的trap似乎只在其定义的函数范围内工作。例如,运行这个脚本

#!/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

是否有一种全局捕获
错误的方法,这样我就不必在每个函数中单独捕获它了?

默认情况下,shell函数不会继承
错误捕获

帮助集
引用:

  -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

在脚本开始时,应使其按预期工作。

@piotrdorgost结果是,需要设置一个shell选项。