shell 脚本 :提示用户输入 y/n ,同时倒计时 10 秒,倒计时结束按缺省值执行(y) 这个应该怎么实现呢?
用 read -p 一直在等待 也没查到相关参数 能支持倒计时
1
ik 2 小时 12 分钟前 via iPhone
[-t timeout]
|
2
brom111 2 小时 4 分钟前
虽然但是 help 一下就有 -t
|
3
0x5c0f 2 小时 3 分钟前
read: read [-ers] [-a 数组] [-d 分隔符] [-i 文本] [-n 字符数] [-N 字符数] [-p 提示符] [-t 超时] [-u fd] [名称 ...]
或者用循环,按照开发的逻辑写,循环一次 sleep 一次 , |
5
rogerchen 1 小时 48 分钟前
lmgtfy(let me gpt that for you)
#!/bin/bash # 默认值 default="y" timeout=10 # 提示用户输入 echo -n "请输入 y/n ,默认为 '${default}' 倒计时开始: " # 启动一个后台进程来处理倒计时 ( for ((i=timeout; i>0; i--)); do echo -ne "\r 请输入 y/n ,默认为 '${default}',剩余时间: ${i} 秒 " sleep 1 done echo -ne "\r 倒计时结束,选择默认值 '${default}' \n" ) & countdown_pid=$! # 获取后台倒计时进程的 PID # 读取用户输入 read -t $timeout -n 1 user_input # 终止倒计时进程 kill $countdown_pid 2>/dev/null wait $countdown_pid 2>/dev/null # 判断用户输入 if [[ -z "$user_input" ]]; then user_input=$default fi # 输出结果 echo echo "你选择的是: $user_input" |
7
xkwy001 1 小时 46 分钟前
for i in $(seq 9 -1 0); do read -p "$(echo -e "\rConfirm?(Y/n) $i:")" -n 1 -t 1 outval && break; done
|
10
oneisall8955 1 小时 15 分钟前
这种 chatgpt 最适合了写小脚本了
|