gpt4 book ai didi

bash - 退出函数栈而不退出 shell

转载 作者:行者123 更新时间:2023-11-29 08:42:04 24 4
gpt4 key购买 nike

我在编写脚本时遇到了一个奇怪的问题。如果我要获取一个包含一堆函数的脚本,这些函数可能会调用输出字符串然后退出的错误函数,它将退出我的 shell。我知道它为什么这样做。这是因为函数调用与调用者处于同一进程空间(至少它在 bash 中),所以函数内的退出以提供的退出代码终止当前进程。示例:

error()
{
echo $1
exit 1
}

fn()
{
if [ $# == 0 ]; then
error "Insufficient parameters."
fi
# do stuff
}

$ fn
Insufficient parameters.
[shell terminates]

所以我的问题是,我可以在不终止当前 shell 并且不产生新的子 shell 的情况下退出函数堆栈中的所有函数吗?

谢谢

最佳答案

要在不退出 shell 的情况下退出函数堆栈,可以使用以下命令:

kill -INT $$

作为pizza声明,这就像按 Ctrl-C,这将停止当前脚本的运行并将您带到命令提示符。


注意:我没有选择 pizza 的唯一原因的答案是因为这被埋在他/她的答案中而没有直接回答。

关于bash - 退出函数栈而不退出 shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11141120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com