我正在写一个脚本,然后遇到了一个奇怪的问题。如果我要获取一个包含一堆函数的脚本,这些函数可能会调用一个错误函数,该函数输出一个字符串然后退出,它将退出我的 shell。我知道它为什么这样做。这是因为函数调用与调用者在同一个进程空间中(至少它在 bash 中),所以函数内的退出使用提供的退出代码终止当前进程。例子:
error()
{
echo $1
exit 1
}
fn()
{
if [ $# == 0 ]; then
error "Insufficient parameters."
fi
# do stuff
}
$ fn
Insufficient parameters.
[shell terminates]
所以我的问题是,我可以退出函数堆栈中的所有函数而不终止当前 shell 并且不产生新的子 shell 吗?
谢谢