BASH - 陷阱 Ctrl+C 在退出前清除进程

BASH - Trap Ctrl+C to clean process before quiting

我想在我的脚本中捕获 Control + C 以便我可以在退出脚本之前进行一些清理。到目前为止我有这个:

trap ctrl_c INT

main_script() {
   #State of the art technology happening here
}

ctrl_c() {
   #Do some cleaning
   exit 1
}

问题是在我按下 Control + C 并返回控制台后,控制台行为异常。我再也看不到我的键盘输入,按回车键也不会换行。例如,这是我的控制台的样子:

root@ZonkedCream:~# root@ZonkedCream:~# root@ZonkedCream:~#

感谢帮助

我们没有您脚本的源代码,所以...只是猜测。

可能您的脚本以某种方式更改了 stty 设置,并且当您使用 CTRL-C 中断应用程序时它们没有恢复。

我建议您在脚本启动后立即保存 stty 标志,并在 ctrl_c() 函数中恢复它们,或者 - 至少 - 在 [=17= 中使用 stty sane ]() 退出前。