news 2026/4/22 15:41:45

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/4/18 10:10:23

通达信阳光紫块买入主图

{}工作线:MA(CLOSE,1); 趋势线:MA(CLOSE,18)COLORGREEN,LINETHICK2; 强势线:MA(CLOSE,3)COLORRED,LINETHICK2; TT2:DMA((((HIGH LOW) (CLOSE * 2)) / 4.15),0.9); TT1:REF(EMA(TT2,3),1); RSV:(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100; K:SMA(RSV,3,1); D:SMA(K,3,1…

作者头像 李华
网站建设 2026/4/18 2:02:12

韦东山关闭GUI相关命令

禁用自动息屏# 禁用屏幕保护(临时生效,重启后失效) echo -e "\033[9;0]" > /dev/tty0关闭一直在闪烁的光标‘echo 0 > /sys/class/graphics/fbcon/cursor_blink

作者头像 李华
网站建设 2026/4/19 18:16:16

32、虚拟机器管理与使用指南

虚拟机器管理与使用指南 在虚拟机器(VM)的使用和管理中,有许多工具和方法可以帮助我们更高效地操作。下面将详细介绍一些常用的工具和操作方法。 脚本执行选项 在创建和管理 VM 时,有两个重要的脚本执行选项: - --firstboot script :此选项类似于 --execscript ,…

作者头像 李华
网站建设 2026/4/20 0:36:27

55、UNIX 系统中 STREAMS 机制与 Idterm 模块详解

UNIX 系统中 STREAMS 机制与 Idterm 模块详解 1. 进程组操作 用户输入第二组进程的命令字符串后,shell 会将组内的首个进程设为进程组组长,其余成员归入同一进程组。接着,系统会调用 tcsetpgrp 把终端切换到这个新的进程组,随后 shell 再次执行等待操作。 若用户输入 …

作者头像 李华
网站建设 2026/4/18 2:47:03

56、UNIX系统V Release 4的终端与网络特性解析

UNIX系统V Release 4的终端与网络特性解析 1. 终端字符读取延迟问题 在字符读取操作完成时,当字符缓慢输入时存在一个明显的缺点,即字符在被读取之前至少会有0.1秒的延迟。 2. 其他终端问题 UNIX系统V Release 4的终端I/O机制支持伪终端和智能串行设备控制器,下面将分别…

作者头像 李华
网站建设 2026/4/21 1:30:08

6、日期时间与算法数据结构相关问题及解决方案

日期时间与算法数据结构相关问题及解决方案 1. 日期和时间问题 在处理日期和时间相关的编程任务时,会遇到各种各样的问题,下面将详细介绍这些问题及对应的解决方案。 1.1 问题列表 问题编号 问题描述 39 测量函数执行时间,需编写一个函数能以任意所需的时长单位(如秒…

作者头像 李华