shell 脚本 :提示用户输入 y/n,同时倒计时 10 秒,倒计时结束按缺省值执行(y)

5 小时 22 分钟前
 wolfcdd

shell 脚本 :提示用户输入 y/n ,同时倒计时 10 秒,倒计时结束按缺省值执行(y) 这个应该怎么实现呢?

用 read -p 一直在等待 也没查到相关参数 能支持倒计时

1034 次点击
所在节点    Linux
10 条回复
ik
5 小时 18 分钟前
[-t timeout]
brom111
5 小时 10 分钟前
虽然但是 help 一下就有 -t
0x5c0f
5 小时 9 分钟前
read: read [-ers] [-a 数组] [-d 分隔符] [-i 文本] [-n 字符数] [-N 字符数] [-p 提示符] [-t 超时] [-u fd] [名称 ...]

或者用循环,按照开发的逻辑写,循环一次 sleep 一次 ,
wolfcdd
5 小时 2 分钟前
@brom111 不行,没有倒计时的提示 我想要那种能够动态记秒的倒计时。。。
rogerchen
4 小时 54 分钟前
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"
brom111
4 小时 53 分钟前
@wolfcdd 那你写个循环不就行了吗 echo 一下
xkwy001
4 小时 52 分钟前
for i in $(seq 9 -1 0); do read -p "$(echo -e "\rConfirm?(Y/n) $i:")" -n 1 -t 1 outval && break; done
wolfcdd
4 小时 49 分钟前
@rogerchen 还是 gpt 牛逼
wolfcdd
4 小时 48 分钟前
@rogerchen 完美实现了我的需求 gpt 牛逼
oneisall8955
4 小时 22 分钟前
这种 chatgpt 最适合了写小脚本了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1098671

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX