news 2026/6/9 6:49:03

Linux Shell 脚本入门实战:猜数字游戏开发(核心知识点总结)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux Shell 脚本入门实战:猜数字游戏开发(核心知识点总结)

前言

作为 Linux Shell 脚本初学者,近期通过实战开发猜数字游戏,系统掌握了脚本基础核心语法,彻底理清了变量操作、流程控制等关键知识点。本文将结合完整的游戏脚本,逐一拆解学习收获,从基础语法到实战落地,一步步带你搞定 Shell 入门核心内容,适合零基础同学参考学习。

一、学习收获与核心知识点

本次学习重点掌握 5 大核心内容,全部结合猜数字游戏实战落地,语法简单易懂、直接可复用,具体如下:

1. 变量的创建、赋值与读取

Shell 脚本中变量无需提前声明数据类型,直接赋值即可使用,核心规则简单好记,是脚本开发的基础。

- 创建与赋值:语法为 变量名=值 ,核心注意点是 = 前后不能加空格,否则会被 Shell 识别为命令,导致报错。

- 变量读取:引用变量时需加 $ 符号,语法为 $变量名 ,用于获取变量存储的值并使用。

- 读取用户输入:通过 read 变量名 命令实现,可接收用户在终端的输入内容,并自动赋值给指定变量,实现脚本与用户的交互。

实战代码片段:

bash

# 1. 创建并赋值变量(欢迎语变量)

welcome="Welcome to channel"

# 2. 读取变量并输出

echo $welcome

# 3. 读取用户输入(接收用户猜测的数字)

echo "Please enter a number"

read guess # 将用户输入赋值给 guess 变量

2. 随机数的表示方法

开发猜数字游戏,核心是让系统生成随机整数,Linux 中无需额外安装工具,使用 shuf 命令即可快速实现,语法简洁、实用性强。

- 核心语法: shuf -i 起始值-结束值 -n 1 ,其中 -i 指定随机数生成区间, -n 1 表示只生成 1 个随机数。

- 实战应用:将随机数生成结果赋值给变量,后续用于猜数字对比逻辑,示例如下:

bash

# 生成 1-10 之间的 1 个随机数,赋值给 number 变量

number=$(shuf -i 1-10 -n 1)

# 测试用:读取并打印随机数(正式玩可注释)

echo $number

3. if 条件判断语句

if 语句是 Shell 脚本实现分支逻辑的核心,支持单分支、多分支判断,可根据不同条件执行对应代码,满足脚本复杂逻辑需求。

- 核心语法:

- 单分支: if [ 条件表达式 ]; then 执行命令; fi

- 多分支: if [ 条件1 ]; then 命令1; elif [ 条件2 ]; then 命令2; else 命令3; fi

- 关键注意点:条件表达式外层的 [] 或 [[]] 前后必须加空格,否则语法解析失败;多分支判断需用 elif 衔接,最终用 fi 闭合,避免结构不完整报错。

实战代码片段(猜数字判断逻辑):

bash

# 多分支判断:对比用户猜测数字与系统随机数

if [[ $guess -eq $number ]]; then

echo "you are right,choose to continue or break(Y or N)"

elif [[ $guess -lt $number ]]; then

echo "it is smaller than the right number"

else

echo "it is bigger than the right number"

fi

4. 循环语句的使用

循环语句可实现代码重复执行,本次实战采用 while true 实现无限循环,让游戏持续运行,配合 continue 和 break 灵活控制循环流程。

- 核心语法: while true; do 循环体代码; done , while true 表示循环条件永久为真,实现无限循环。

- 流程控制补充:

- continue :跳过当前循环剩余代码,直接进入下一次循环,比如用户输入非数字时,跳过后续判断,重新让用户输入。

- break :跳出当前所在的循环,结束循环执行,比如用户选择退出游戏时,跳出无限循环,终止脚本。

实战代码片段(游戏主循环):

bash

# 游戏无限循环,持续运行直到用户选择退出

while true

do

# 循环体:用户输入、条件判断等核心逻辑

echo "Please enter a number"

read guess

# 非数字输入处理,跳过后续逻辑,重新循环

if ! [[ $guess =~ ^[0-9]+$ ]]; then

echo "Error!Please enter a valid number"

continue

fi

# 退出逻辑,跳出循环

elif [[ $choice = 'n' ]] || [[ $choice = 'N' ]]; then

echo "Game over!"

break

fi

done

5. 字符比较用 =

Shell 中字符(字符串)的等于判断,核心使用 = 运算符(与 == 功能等价),主要用于判断用户输入的字符型内容,比如游戏中用户选择的 Y/N。

- 核心语法: [ 字符串1 = 字符串2 ] 或 [[ 字符串1 = 字符串2 ]] ,前后必须加空格,保证语法合法。

- 实战应用:结合逻辑或 || 实现多字符匹配,比如同时判断用户输入的是小写 y 还是大写 Y,执行相同逻辑。

实战代码片段(用户选择判断):

bash

# 字符比较:判断用户是否选择继续游戏

read choice

if [[ $choice = 'y' ]] || [[ $choice = 'Y' ]]; then

# 重新生成随机数,继续游戏

number=$(shuf -i 1-10 -n 1)

continue

elif [[ $choice = 'n' ]] || [[ $choice = 'N' ]]; then

# 退出游戏

echo "Game over!"

break

fi

二、完整可运行实战脚本

整合上述所有核心知识点,实现完整的猜数字游戏,代码无语法错误,直接复制即可运行:

bash

#!/bin/bash

# 猜数字游戏 - Shell 基础语法实战

# 1. 变量创建与赋值

welcome="Welcome to channel"

echo $welcome

# 2. 生成 1-10 随机数

number=$(shuf -i 1-10 -n 1)

# 测试用:打印随机数,正式游玩可注释

echo $number

# 3. 循环语句:游戏主循环

while true

do

# 读取用户输入

echo "Please enter a number"

read guess

# 非数字输入校验(补充优化,提升脚本健壮性)

if ! [[ $guess =~ ^[0-9]+$ ]]; then

echo "Error!Please enter a valid number"

continue

fi

# 4. if 条件判断:猜数字核心逻辑

if [[ $guess -eq $number ]]; then

echo "you are right,choose to continue or break(Y or N)"

read choice

# 5. 字符比较:判断用户选择

if [[ $choice = 'y' ]] || [[ $choice = 'Y' ]]; then

# 重新生成随机数,继续游戏

number=$(shuf -i 1-10 -n 1)

echo $number

continue

elif [[ $choice = 'n' ]] || [[ $choice = 'N' ]]; then

echo "Game over!"

break

else

echo "Please enter the right choice!"

fi

elif [[ $guess -lt $number ]]; then

echo "it is smaller than the right number"

else

echo "it is bigger than the right number"

fi

done

三、脚本运行步骤

1. 创建脚本文件:打开 Linux 终端,输入 vim game.sh ,进入文本编辑模式;

2. 粘贴代码并保存:将上述完整代码复制粘贴到编辑界面,按 Esc 键,输入 :wq 保存并退出;

3. 赋予执行权限:输入 chmod u+x game.sh ,为脚本添加用户执行权限;

4. 运行脚本:输入 bash game.sh 或 ./game.sh ,即可启动猜数字游戏。

四、避坑小技巧

1. 变量赋值时, = 前后绝对不能加空格,这是初学者最容易踩的坑,比如 number = 5 会直接报错;

2. 条件判断中, [] / [[]] 前后必须加空格,字符比较、数值比较的运算符不能混用;

3. 字符比较用 = ,数值比较用 -eq (等于)、 -lt (小于)、 -gt (大于),避免语法混淆;

4. if 语句、循环语句必须闭合完整, if 对应 fi , while 对应 done ,缺失会导致脚本解析失败。

五、总结

本次通过猜数字游戏实战,成功掌握了 Shell 脚本 5 大核心知识点,从变量操作到流程控制,实现了从语法学习到实战落地的转化。Shell 脚本核心是简洁高效,掌握基础语法后,通过多实战、多练习,就能逐步实现自动化操作、批量处理等更复杂的需求。后续将继续深化学习,探索更多 Shell 进阶功能,持续提升脚本开发能力!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 20:05:57

量3D副图、 源码 、帖图

{}VAR1:VOL/((HIGH-LOW)*2-ABS(CLOSE-OPEN)); 主买:IF(CLOSE>OPEN,VAR1*(HIGH-LOW),IF(CLOSE<OPEN,VAR1*((HIGH-OPEN)(CLOSE-LOW)),VOL/2)),COLOR0055FF,LINETHICK0; 主卖:IF(CLOSE>OPEN,0-VAR1*((HIGH-CLOSE)(OPEN-LOW)),IF(CLOSE<OPEN,0-VAR1*(HIGH-LOW),0-VOL/2…

作者头像 李华
网站建设 2026/6/9 20:06:15

如何用 SpringAI 调用 StabilityAI 图像模型?轻松生成惊艳图像!

大家好,我是小米!今天带大家一起走进一个非常有趣的技术世界。我们要聊的,不是另一个普通的技术课题,而是如何通过 SpringAI 来调用 StabilityAI 图像模型,并把这个过程比作一场神奇的图像生成之旅! 想象一下,你走进了一家魔法工厂,这里有无数的机器,可以把你脑海中的…

作者头像 李华
网站建设 2026/6/9 22:13:57

基于vue的医院门诊处方管理系统_m964lx0c_springboot php python nodejs

目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作具体实现截图 本系统&#xff08;程序源码数据库调试部署讲解&#xff09;同时还支持java、ThinkPHP、Node.js、Spring B…

作者头像 李华
网站建设 2026/6/9 20:59:28

基于QueryInst的钢轨悬挂部件缺陷检测与识别系统实现_1

本数据集为钢轨探伤车采集的图像数据集&#xff0c;共包含93张经过预处理的图像&#xff0c;用于钢轨悬挂部件和机械零件的缺陷检测与识别任务。数据集采用YOLOv8格式标注&#xff0c;包含四个类别&#xff1a;悬挂部件(HangingParts)、轴盖(axlecover)、端块(empad)和弹簧(spr…

作者头像 李华
网站建设 2026/6/9 21:04:33

52、深入解析STREAMS的操作原理与机制

深入解析STREAMS的操作原理与机制 1. 首次打开流的操作流程 当 vp->v_stream == 0 时,意味着这是该流的首次打开操作。首先会进行内存检查,以确保STREAMS没有使用过多的内存。接着,会分配一个队列对和一个流头,初始化流头( stdata_t )并设置 STWOPEN 标志,同…

作者头像 李华
网站建设 2026/6/9 6:30:56

IDE透明视频播放插件:提升编程体验的多媒体解决方案

IDE透明视频播放插件&#xff1a;提升编程体验的多媒体解决方案 【免费下载链接】intellij-media-player 【&#x1f41f;摸鱼专用】上班偷偷看视频&#x1f4fa;而不会被老板打&#x1f528;的IDE插件&#xff0c;适配JetBrains全家桶 项目地址: https://gitcode.com/gh_mir…

作者头像 李华