通过猜数字游戏学习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"
相关推荐
毒爪的小新6 小时前
Linux 环境极速部署 vLLM:从零搭建生产级大模型推理服务
linux·人工智能·ai·语言模型·vllm
鹤落晴春6 小时前
RH124问答3:从命令行管理文件
linux·运维·服务器
凡人叶枫7 小时前
Effective C++ 条款30:透彻了解 inlining 的里里外外
linux·开发语言·c++·嵌入式开发·effective c++
Net_Walke7 小时前
【Linux系统】静态链接库与动态链接库
linux·嵌入式硬件
syc78901238 小时前
中文语境下AI编码工具实战对比:从迭代体验看日常开发选择
linux·人工智能·ubuntu
凡人叶枫8 小时前
Effective C++ 条款22:将成员变量声明为 private
linux·开发语言·c++
袁小皮皮不皮9 小时前
1.HCIP BFD 学习笔记(优化版)
服务器·网络·笔记·网络协议·学习·智能路由器·ip
装不满的克莱因瓶10 小时前
【自动驾驶领域】学习 Cityscapes 数据集——城市街景语义理解的标准基准
人工智能·pytorch·python·深度学习·学习·机器学习·自动驾驶
vsropy10 小时前
Ubuntu网络图标消失问题/有网络问号
linux·运维·ubuntu
coderwu10 小时前
Ubuntu 24.04 终端输入 openclaw config 提示未找到命令解决办法
linux·运维·ubuntu