这个语句在shell脚本中的作用是什么?
set -o errtrace
Run Code Online (Sandbox Code Playgroud)
    kon*_*box 19
从手册:
Run Code Online (Sandbox Code Playgroud)#!/bin/bash set -o errtrace function x { echo "X begins." false echo "X ends." } function y { echo "Y begins." false echo "Y ends." } trap 'echo "ERR trap called in ${FUNCNAME-main context}."' ERR x y false true
当errtrace被使能,当错误(命令返回一个非零码)函数或子外壳内发生也被触发的ERR陷阱.换句话说,我们可以告诉你,除非errtrace启用了函数或子shell的上下文,否则它不会继承ERR陷阱.
X begins.
ERR trap called in x.
X ends.
Y begins.
ERR trap called in y.
Y ends.
ERR trap called in main context.
Run Code Online (Sandbox Code Playgroud)
输出:
X begins.
X ends.
Y begins.
Y ends.
ERR trap called in main context.
Run Code Online (Sandbox Code Playgroud)
何时errtrace未启用:
#!/bin/bash
set -o errtrace
function x {
    echo "X begins."
    false
    echo "X ends."
}
function y {
    echo "Y begins."
    false
    echo "Y ends."
}
trap 'echo "ERR trap called in ${FUNCNAME-main context}."' ERR
x
y
false
true
Run Code Online (Sandbox Code Playgroud)