如何在全球范围内将on_error困在 bash 中


似乎

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陷阱。

引用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

在脚本的开头应该使其按预期工作。

相关内容

  • 没有找到相关文章

最新更新