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

Bash脚本开发求助:实现答No重复询问4次、答Yes退出功能

修正你的Bash茶询问脚本

嘿,刚入门Bash脚本踩点小坑太正常啦!我帮你调整下代码,解决重复询问4次的需求,同时修复原脚本里的语法问题:

首先先说说原脚本里的几个小问题:

  • read answer 放在循环外面,只会读取一次用户输入,后面循环没法更新答案
  • if语句的语法不对,缺少闭合的fi,还有多余的then
  • 重复写四次N的判断太冗余,用计数器来控制次数更简洁
  • 变量引用没加双引号,遇到空输入会报错

下面是修正后的代码,我加了注释方便你理解:

#!/bin/bash

# 初始化计数器,记录用户回答No的次数
no_count=0

while true; do
    # 每次循环都提示并读取用户输入
    echo "Would you like a cup of tea?"
    read -r answer

    # 兼容大小写的判断,用户输入Y/y都算同意
    if [[ "$answer" =~ ^[Yy]$ ]]; then
        echo "Great, I'll make tea now"
        break  # 退出循环,脚本结束
    # 用户输入N/n时,计数器加1
    elif [[ "$answer" =~ ^[Nn]$ ]]; then
        no_count=$((no_count + 1))
        # 前3次回答No时,继续询问
        if [ "$no_count" -lt 4 ]; then
            echo "Are you sure?"
        # 第4次回答No时,放弃并退出
        else
            echo "Ok, I give up!"
            exit 0
        fi
    # 处理用户输入其他内容的情况
    else
        echo "Sorry, I don't understand that. Please answer Y or N."
    fi
done

这个脚本的逻辑是:

  • 每次循环都会重新询问并读取用户的答案
  • 支持大小写的Y/N输入,更友好
  • 用计数器no_count来跟踪用户回答No的次数,前3次问"Are you sure?",第4次就放弃退出
  • 如果用户输入其他内容,会提示重新输入

内容的提问来源于stack exchange,提问作者Gerry H

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:35:53