通过猜数字游戏学习Shell脚本的分支、循环编写

通过猜数字游戏学习Shell脚本的分支、循环

文章目录

一、最基本的猜数字(if条件判断)

1.单分支

bash 复制代码
#!/bin/bash
# 学习目标:掌握最基本的if条件判断语法
# 知识点:变量定义、用户输入、单分支if语句

number=8  # 设置要猜的数字
echo "Random number is $number"  # 显示答案(调试用)
echo "Input a number in 1-10"    # 提示用户输入
read guess  # 读取用户输入

# 单分支if语句:只有条件成立时才执行
if [[ $guess -eq $number ]]  # 判断是否相等
then 
    echo "You are right!"  # 猜对时的反馈
fi

2.双分支

bash 复制代码
#!/bin/bash
# 学习目标:掌握if-else双分支结构
# 知识点:双分支判断、条件不成立时的处理

number=9
echo "Random number is $number"
echo "Input a number in 1-10"
read guess

# 双分支if语句:条件成立执行then,不成立执行else
if [[ $guess -eq $number ]]
then 
    echo "You are right!"  # 猜对时的反馈
else 
    echo "You are wrong!"  # 猜错时的反馈(新增功能)
fi

二、增加比大小(if多分支)

bash 复制代码
#!/bin/bash
# 学习目标:掌握if-elif-else多分支结构
# 知识点:多条件判断、比较运算符(-lt小于, -gt大于)、elif用法

number=9
echo "Random number is $number"
echo "Input a number in 1-10"
read guess

# 多分支if语句:提供更详细的反馈
if [[ $guess -eq $number ]];then
        echo "You are right!"
elif [[ $guess -lt $number  ]];then  # 新增:判断是否小于
        echo "Your reply is smaller than the answer."  # 提示太小
else  # 既不等于也不小于,那就是大于
        echo "Your reply is bigger than the answer."   # 提示太大
fi

三、多次猜测(循环)

1.基础多次猜测(while循环)

bash 复制代码
#!/bin/bash
# 学习目标:掌握while循环实现重复猜测
# 知识点:while循环、break退出循环、continue继续循环、嵌套if语句

number=9
echo "Random number is $number"
while true  # 无限循环,直到break退出
do
        echo "Input a number in 1-10"
        read guess

        if [[ $guess -eq $number ]];then
                echo "You are right! Continue?(y/n):"
                read con
                if [[ $con = "y" ]];then
                        continue  # 继续下一轮游戏
                else
                        break     # 退出循环,结束游戏
                fi
        elif [[ $guess -lt $number  ]];then
                echo "Your reply is smaller than the answer."
        else
                echo "Your reply is bigger than the answer."
        fi
done
echo "Game over"  # 循环结束后执行

2.忽略大小写(逻辑运算符)

bash 复制代码
#!/bin/bash
# 学习目标:掌握逻辑运算符||的使用
# 知识点:逻辑或(||)、忽略大小写的用户输入处理

number=9
echo "Random number is $number"
while true
do
        echo "Input a number in 1-10"
        read guess

        if [[ $guess -eq $number ]];then
                echo "You are right! Continue?(y/n):"
                read con
                # 关键判断:使用逻辑或(||)接受'y'或'Y'继续游戏
                # 新增功能:忽略大小写,提升用户体验
                if [[ $con = "y" ]] || [[ $con = "Y" ]]; then
                        continue
                else
                        break
                fi
        elif [[ $guess -lt $number  ]];then
                echo "Your reply is smaller than the answer."
        else 
                echo "Your reply is bigger than the answer."
        fi
done
echo "Game over"                    

3.随机数猜数字(RANDOM随机数)

bash 复制代码
#!/bin/bash
# 学习目标:掌握使用RANDOM变量生成随机数
# 知识点:$RANDOM变量、取余运算%、算术表达式$((...))

number=$((RANDOM % 10 + 1))  # 生成1-10的随机数:RANDOM%10得0-9,+1后得1-10
echo "Random number is $number"
while true
do
        echo "Input a number in 1-10"
        read guess

        if [[ $guess -eq $number ]];then
                echo "You are right! Continue?(y/n):"
                read con
                if [[ $con = "y" ]] || [[ $con = "Y" ]]; then
                        continue
                else
                        break
                fi
        elif [[ $guess -lt $number  ]];then
                echo "Your reply is smaller than the answer."
        else
                echo "Your reply is bigger than the answer."
        fi
done
echo "Game over" 

4.猜数字完整版(每次都重新生成随机数继续猜)

bash 复制代码
#!/bin/bash
# 学习目标:实现完整的可重复游戏流程
# 知识点:游戏状态重置、循环内重新生成随机数、完整游戏逻辑整合

number=$((RANDOM % 10 + 1))
echo "NEW GAME!Random number is $number"
while true
do
        echo "Input a number in 1-10"
        read guess

        if [[ $guess -eq $number ]];then
                echo "You are right! Continue?(y/n):"
                read con
                if [[ $con = "y" ]] || [[ $con = "Y"  ]];then
                        # 关键改进:猜对后重新生成随机数,开始新游戏
                        number=$((RANDOM % 10 + 1))
                        echo "NEW GAME!Random number is $number"
                        continue  # 继续下一轮(新数字)
                else
                        break
                fi
        elif [[ $guess -lt $number  ]];then
                echo "Your reply is smaller than the answer."
        else
                echo "Your reply is bigger than the answer."
        fi
done

echo "Game over"
相关推荐
贵州诚鑫致达科技有限公司4 小时前
Linux的yum源怎么重启?源不是服务
linux·运维·服务器
遇印记5 小时前
传输层,网络层
运维·服务器·网络·windows·学习
clorinda6 小时前
PyQt5学习:从界面搭建到与机器学习实战
学习
澜山奕秋7 小时前
RHCSA
linux·运维·服务器
Web极客码8 小时前
告别流式截断:我用客户端中间件解决长文本 API 跨国 SSE 断连与数据自愈
linux·agent 图
欣欣之王来了8 小时前
Vue3项目脚手架:Vite vs Vue CLI怎么选?
前端·学习·架构·项目·vue3教程
cnnews8 小时前
Chromebox3安装Ubuntu后内存化与最小化 eMMC 写入优化
linux·运维·ubuntu
kaixin_啊啊8 小时前
【零基础学AI】第 7 章——让 AI 辅助学习和办公
人工智能·学习
信奥卷王8 小时前
[GESP202506 六级] 学习小组(含视频)
学习
flytalei9 小时前
Ubuntu 24.04 单节点 K3s 部署实践:从环境评估到故障排查与验收
linux·运维·ubuntu