请考虑以下代码段:
stop () {
echo "${1}" 1>&2
exit 1
}
func () {
if false; then
echo "foo"
else
stop "something went wrong"
fi
}
通常,当func
被调用时,它将导致脚本终止,这是预期的行为。但是,如果它是在子外壳中执行的,例如
result=`func`
它不会退出脚本。这意味着调用代码必须每次检查函数的退出状态。有办法避免这种情况吗?这set -e
是为了什么?