为了测试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(exit
或Ctrl+ D)。$PPID
确保信号到达父 shell(无需玩弄ps
和猜测)。