V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
wolfcdd
V2EX  ›  Linux

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

  •  
  •   wolfcdd · 4 天前 · 1557 次点击

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

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

    10 条回复    2024-12-19 10:26:34 +08:00
    ik
        1
    ik  
       4 天前 via iPhone
    [-t timeout]
    brom111
        2
    brom111  
       4 天前
    虽然但是 help 一下就有 -t
    0x5c0f
        3
    0x5c0f  
       4 天前
    read: read [-ers] [-a 数组] [-d 分隔符] [-i 文本] [-n 字符数] [-N 字符数] [-p 提示符] [-t 超时] [-u fd] [名称 ...]

    或者用循环,按照开发的逻辑写,循环一次 sleep 一次 ,
    wolfcdd
        4
    wolfcdd  
    OP
       4 天前
    @brom111 不行,没有倒计时的提示 我想要那种能够动态记秒的倒计时。。。
    rogerchen
        5
    rogerchen  
       4 天前
    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
        6
    brom111  
       4 天前
    @wolfcdd 那你写个循环不就行了吗 echo 一下
    xkwy001
        7
    xkwy001  
       4 天前
    for i in $(seq 9 -1 0); do read -p "$(echo -e "\rConfirm?(Y/n) $i:")" -n 1 -t 1 outval && break; done
    wolfcdd
        8
    wolfcdd  
    OP
       4 天前
    @rogerchen 还是 gpt 牛逼
    wolfcdd
        9
    wolfcdd  
    OP
       4 天前
    @rogerchen 完美实现了我的需求 gpt 牛逼
    oneisall8955
        10
    oneisall8955  
       4 天前
    这种 chatgpt 最适合了写小脚本了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   988 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 21:06 · PVG 05:06 · LAX 13:06 · JFK 16:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.