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
相关产品推荐
相关产品推荐

