Bash脚本中如何检测回车键按下或无输入状态?
可中断倒计时Bash脚本修复方法
原脚本问题原因
read使用了-n 1参数,每次仅读取1个字符,按下回车键时读取到的是换行符,不是空值,所以原脚本的空值判断逻辑永远无法触发- 超时无输入时存储输入的变量会被清空,逻辑冲突导致无法正确识别无输入状态
修复后完整代码
#!/bin/bash # 自定义等待时长,单位为秒 total_wait=5 while [ ${total_wait} -gt 0 ]; do echo "将在 ${total_wait} 秒后启动程序,按下回车键可停止等待" # 每次等待1秒,仅响应回车键输入 if read -r -t 1 -s -d ''; then echo "已停止等待" exit 0 fi total_wait=$((total_wait - 1)) done # 倒计时结束后执行的逻辑,可替换为实际要运行的命令 echo "开始运行程序"
使用说明
把代码最后一行的echo "开始运行程序"替换为你实际需要启动的程序/命令即可。如果要修改等待时长,修改total_wait的取值就行。
内容的提问来源于stack exchange,提问作者CL So
相关产品推荐
相关产品推荐

