You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:54:04