【发布时间】:2021-04-30 13:14:33
【问题描述】:
鉴于此 bash 脚本:
stty -echo
echo $(stty)
reset() {
stty echo
echo $(stty)
exit
}
trap reset int
read -s
sleep 10
我希望启用 echo 选项,但在按下 ctrlc 后它仍然被禁用,即使我已经运行了 stty echo(如您在reset 函数的输出)。
【问题讨论】:
-
请不要图片。
-
@Roadowl 这个有什么问题?我粘贴的唯一内容是
bash demo.sh,按下ctrl+c并运行stty。 -
您可以发布运行脚本的副本,将其标记为“代码”——最好使用三反引号和“无”一词(这很难在评论中展示)。
-
bash restores tty 当 read -s 退出时。我认为链是:
read -s开始,SIGINT 陷阱执行,read -s恢复标志,脚本终止。 -
请注意,如果您使用
read -s,则完全无需乱动终端设置。只需使用read -s——它已经可以处理无回显模式和中断。你似乎在试图解决一个不需要你解决的问题; Bash 已经处理好了。