在shell脚本中`set -o errtrace`有什么作用?
此语句在shell脚本中有什么作用?
set -o errtrace
回答:
从手册中:
errtrace与-E相同。
-E如果设置,则ERR函数上的任何陷阱都将被Shell函数,命令替换以及在子Shell环境中执行的命令继承。在这种情况下,通常不会继承ERR陷阱。
当errtrace
被使能,当错误(命令返回一个非零码)函数或子外壳内发生也被触发的ERR陷阱。换一种说法是,除非errtrace
启用,否则函数或子Shell的上下文不会继承ERR陷阱。
#!/bin/bashset -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
输出:
X begins.ERR trap called in x.
X ends.
Y begins.
ERR trap called in y.
Y ends.
ERR trap called in main context.
当errtrace
未启用:
X begins.X ends.
Y begins.
Y ends.
ERR trap called in main context.
以上是 在shell脚本中`set -o errtrace`有什么作用? 的全部内容, 来源链接: utcz.com/qa/419105.html