通过猜数字游戏学习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"
相关推荐
李子琪。2 分钟前
云计算虚拟化技术全解析:从理论到实践
linux·centos·云计算
wuminyu3 分钟前
markword在高并发场景下变化剖析
java·linux·c语言·jvm·c++
星夜夏空995 分钟前
C++学习(1) ——C与C++
c语言·c++·学习
Cloud_Shy6189 分钟前
Linux 用户管理知识与应用实践(二:用户相关命令与示例)
linux·运维·服务器·测试用例
小生不才yz14 分钟前
Shell脚本精读 · S08-03 | 脚本模块化:`source` 与多文件组织
linux
想你依然心痛14 分钟前
AtomCode在算法竞赛中的实战体验:LeetCode周赛辅助编程
linux·算法·leetcode
24计网1王仔寿15 分钟前
Linux 系统运维全栈学习路线|从 Shell 脚本到容器云 OpenStack 完整学习指南
linux·学习·openstack
vortex522 分钟前
Shell 命令执行知识体系全景解析
linux·运维·bash·shell·命令行
EntyIU35 分钟前
CentOS-高可用部署手册-MySQL双主RedisNginx
linux·mysql·centos
weixin_4235339940 分钟前
AFSim学习-自定义Processor开发2-将平台状态存储到csv
学习