通过猜数字游戏学习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"
相关推荐
一隅论数智3 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
未济3 天前
linux 配置环境变量
linux
傲世仙尊3 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
XiHongShi20163 天前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
爱吃苹果的日记本3 天前
离散数学第六课
学习·离散数学
_艾伦 耶格尔.3 天前
进程间通信
linux
AI职业加油站3 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
旖旎夜光3 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
Liuqy-053 天前
Linux IO编程——静态库、动态库
linux