如何退出父终端的无限循环?

如何退出父终端的无限循环?

为了测试trap命令我在终端中创建了以下循环:

while true ; do echo BEGIN ; bash -e ; echo "exit code = $?" ; echo END ; done

如何退出这个循环并返回到父shell?

如果使用远程 shell ( ssh) 而不是 ,则bash在建立连接的过程中,按 会有延迟Ctrl+C。但在上述情况下,我无法足够快地捕捉时间窗口。

答案1

在这种情况下,退出子 shell 会导致另一个子 shell 立即出现。要中断循环,请在子 shell 内执行此操作:

kill -s SIGINT $PPID

然后退出子 shell(exitCtrl+ D)。$PPID确保信号到达父 shell(无需玩弄ps和猜测)。

相关内容