当前位置: 首页 > news >正文

Shell入门篇二

一、猜数字小游戏脚本(game.sh)

以下是一个使用 Shell 脚本编写的猜数字小游戏示例,通过这个示进行学习Shell脚本的基本语法和常用命令。

#!/bin/bash
echo "请输入你的姓名:"
echo "$name"
#用户输入信息
#read name 读取用户输入
#name=$1 读取第一个参数作为name
#channel=$2 读取第二个参数作为channel
echo "默认性别为人妖!欢迎$name的使用!"
echo "欢迎来到$channel!"
number=$(shuf -i 1-100 -n 1)  # 生成 1 到 100 之间的随机数
echo $number
while true
doecho "请用户输入一个 1-100 之间的数字!"read guessif [[ $guess -eq $number ]];thenecho "猜对了!"echo "是否继续游玩~(请输入 Y/N):"read choiceif [[ $choice = "Y" ]];thennumber=$((RANDOM % 100 + 1))  # 生成新的随机数continueelif [[ $choice = "N" ]];thenbreakelseecho "你输入的不符合条件,已经自动退出!"breakfielif [[ $guess -lt $number ]];thenecho "很遗憾你猜的数字小咯~"elif [[ $guess -gt $number ]];thenecho "恭喜你猜的数字大了~"elseecho "猜的数字已经偏离正常了哈~"fi
done

二、在 Linux 上创建 Shell 脚本的方法

1. 使用 Vi 编辑器

vi game.sh

2. 使用 VSCode 的远程 SSH 连接扩展

通过 VSCode 的远程 SSH 扩展连接到 Linux 服务器后,创建并编辑game.sh文件。

3. 使用 Nano 编辑器

nano game.sh

三、执行 Shell 脚本

1. 使用./game.sh执行

chmod +x game.sh  # 修改文件权限为可执行
./game.sh

2. 使用bash game.sh执行

bash game.sh

四、参数引用

1. 引用脚本参数

$0  # 当前正在执行的脚本文件的名称
$1  # 传递给脚本的第一个参数
$2  # 传递给脚本的第二个参数

2. 示例

name=$1
echo "默认性别为人妖! 欢迎$name的使用!"

执行脚本时传递参数:

./game.sh 张三

输出结果:

默认性别为人妖! 欢迎张三的使用!

五、环境变量

1. 定义和使用环境变量

# 普通变量
name=张三
channel=猜字游戏界# 环境变量(需要使用 export)
export name=张三
export channel=猜字游戏界

2. 在脚本中使用环境变量

echo "默认性别为人妖! 欢迎$name的使用!"
echo "欢迎来到$channel!"

六、随机数生成

1. 使用shuf命令生成随机数

shuf -i 1-100 -n 1  # 生成一个 1 到 100 的随机数

2. 使用$RANDOM环境变量生成随机数

$RANDOM  # 生成 0 到 32767 之间的随机数
number=$((RANDOM % 100 + 1))  # 生成 1 到 100 的随机数

七、Shell 脚本中的命令

1. 读取用户输入

read 变量名  # 读取用户的输入并存储到变量中

2. 条件判断

if [[ 条件 ]];then# 条件成立时执行的语句
elif [[ 条件 ]];then# 多级分支条件成立时执行的语句
else# 除规定条件外的其他情况执行的语句
fi

3. 常用条件判断操作符

-eq  # 参数相等判断
-lt  # 参数小于判断
-gt  # 参数大于判断
-ne  # 参数不相等判断

4. 循环结构

while 条件
do# 循环体
donefor 变量 in 列表
do# 循环体
done

相关文章:

  • CPS是什么?
  • 基于Springboot + vue3实现的流动摊位管理系统
  • 【CCS】关于CCS12 编译报错:error #10099-D:program will not fit into available memory解决办法
  • 使用MATLAB输出给定范围内的所有质数
  • 07 接口自动化-用例管理框架之pytest单元测试框架
  • MySQL--day5--多表查询
  • MySQL字符串拼接方法全解析
  • 25_05_19Linux实战篇、第一章_01若依前后端部署之路(后端)
  • 【web全栈】若依框架B站学习视频
  • 如何解决测试覆盖率与迭代速度的冲突问题?
  • `application-{env}.yml` 配置文件来实现多环境配置
  • 循环队列分析及应用
  • JavaScript 函数、方法、限定符
  • MySQL中的JSON_CONTAINS函数用法
  • Kali Linux 中文设置
  • dify基于文本模型实现微调Fine-tune语料构造工作流
  • 数据集下载并保存本地进行加载
  • 自动切换剪贴板路径中反斜杠为正斜杠
  • 监控易一体化运维:拥有全部核心技术,助力国产化信创运维
  • 弱网服务器群到底有什么用
  • 商丘网站制作方案/百度网盘下载速度
  • 优秀网站建设出售/关键词分为哪三类