当前位置: 首页 > 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
http://www.xdnf.cn/news/574759.html

相关文章:

  • Seata1.8.0安装部署流程linux
  • 动态规划2
  • 编程技能:字符串函数09,strncmp
  • 阿里云数据盘级别
  • C++ for QWidget:正则表达式和QRegExp
  • 六:操作系统虚拟内存之页替换算法
  • 101个α因子#12
  • nmtui工具使用教程
  • Halcon数据类型
  • RUP的9个核心工作流在电商平台项目中的拆解
  • 操作系统理解(xv6)
  • java进阶 1.0.2
  • ai建模平台:AnKo革新智能创作体验新纪元!
  • 以加减法计算器为例,了解C++命名作用域与函数调用
  • Vue3使用DataV报错无法使用的解决方案
  • 使用allure生成自动化测试报告
  • 通过TDE透明加密实现SQL Server数据库免改造加密
  • 反弹shell
  • MySQL临时表和内存表
  • C11 日期时间处理案例
  • AtCoder 第406场初级竞赛 A~E题解
  • 学习黑客了解密码学
  • Coze工作流-变量以及变量的类型讲解
  • 最新版Chrome浏览器调用ActiveX控件之eDrawings Viewer专用包v2.0.42版本发布
  • 【AI流程应用】智能知识库搭建与实战应用
  • RK3588 RKNN ResNet50推理测试
  • Spring 定时器和异步线程池 实践指南
  • COMP3023 Design and Analysis of Algorithms
  • ./build/mkfs.jffs2: Command not found
  • 车载诊断架构 --- LIN 节点 ECU 故障设计原则