我有一个为学校项目编写的 bash 刽子手游戏,目前我正在尝试替换 ctrl-c exit 命令以进行 while 循环中断,以便用户从实际游戏返回到类别选择菜单。
我当前使用的代码是:
trap "break" SIGINT
在 while 循环内部:
read CHAR
当在循环中打印文本以及运行 sleep 命令时,一切正常,但当算法处于读取命令时,按 ctrl-c 只是在控制台上输入“^C”。
答案1
如果 bash 正在等待命令完成并接收到已设置陷阱的信号,则在命令完成之前不会执行陷阱。
这就是为什么不被中断的原因read
。
^C
由于设置, 不是由 shell 而是由终端打印echoctl
。如果执行stty -echoctl
则不会出现。