通过猜数字游戏学习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"
相关推荐
阿龙的工作记录5 分钟前
深入理解Linux设备驱动模型
linux·嵌入式硬件·工作记录
代码村新手18 分钟前
Linux的基本指令
linux·运维·服务器
caimouse2 小时前
protoc-gen-c 支持 proto3 `optional` 关键字修改记录
c语言·学习
撩得Android一次心动2 小时前
Linux编程笔记3【个人用】
linux·笔记
OpenPomeloxCommunity2 小时前
3. Linux 同步机制之 spinlock 设计与实现(一):通用层
linux
憧憬成为java架构高手的小白2 小时前
黑马八股--中间件学习之MQ(RabbitMQ)
学习·中间件
念恒123063 小时前
网络基础
linux·网络·c++
皮卡狮4 小时前
Linux静态库和动态库详解
linux
撩得Android一次心动4 小时前
Linux编程笔记4【个人用】
linux·笔记·学习