在shell脚本中`set -o errtrace`有什么作用?

此语句在shell脚本中有什么作用?

set -o errtrace

回答:

从手册中:

errtrace与-E相同。

-E如果设置,则ERR函数上的任何陷阱都将被Shell函数,命令替换以及在子Shell环境中执行的命令继承。在这种情况下,通常不会继承ERR陷阱。

errtrace被使能,当错误(命令返回一个非零码)函数或子外壳内发生也被触发的ERR陷阱。换一种说法是,除非errtrace启用,否则函数或子Shell的上下文不会继承ERR陷阱。

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

输出:

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

回到顶部