调用读取命令时陷阱“中断”不起作用

调用读取命令时陷阱“中断”不起作用

我有一个为学校项目编写的 bash 刽子手游戏,目前我正在尝试替换 ctrl-c exit 命令以进行 while 循环中断,以便用户从实际游戏返回到类别选择菜单。

我当前使用的代码是:

trap "break" SIGINT

在 while 循环内部:

read CHAR

当在循环中打印文本以及运行 sleep 命令时,一切正常,但当算法处于读取命令时,按 ctrl-c 只是在控制台上输入“^C”。

答案1

如果 bash 正在等待命令完成并接收到已设置陷阱的信号,则在命令完成之前不会执行陷阱。

这就是为什么不被中断的原因read

^C由于设置, 不是由 shell 而是由终端打印echoctl。如果执行stty -echoctl则不会出现。

相关内容