乐于分享
好东西不私藏

软件测试笔记 | 自动化测试 | Shell脚本创建执行+变量传参核心语法

软件测试笔记 | 自动化测试 | Shell脚本创建执行+变量传参核心语法
“动动小手,点点关注呗~”👇

做测试、运维离不开 Shell 自动化脚本,很多新手刚上手就卡在脚本运行报错、变量不会取值、传参看不懂。今天,我们完整拆解「脚本创建与执行」「变量、字符串、脚本传参核心语法」,零基础跟着敲就能学会!

一、基础入门:脚本创建与执行

1. 脚本文件标准格式

1)文件后缀规范

Shell 脚本统一使用.sh作为文件后缀,例如backup.shmonitor.sh,方便识别区分普通文本。

2)脚本头部解释器声明(必写)

脚本第一行固定添加解释器标识,告诉系统用 bash 解析脚本,缺少会出现语法异常:

3)注释规范

单行注释用#,放在代码上方或行尾做备注,脚本运行时不会执行注释内容:

完整标准模板示例

2. 执行脚本的三种方式

准备测试脚本test.sh,内容如下:

方式 1:赋予执行权限,./ 脚本文件名(企业最常用)

1.添加执行权限

2.执行脚本

原理:通过相对路径调用脚本,会新开 bash 子进程运行,环境变量隔离,是线上标准执行方式。

方式 2sh /bash 直接调用(无需执行权限)

不需要给脚本加 x 权限,直接指定解释器运行:

适用场景:临时测试、批量调用无权限的脚本文件。

方式 3source /. 读取脚本到当前终端执行

特点:不会创建子进程,所有变量、操作直接作用于当前终端,常用于加载环境配置脚本。

三种执行方式核心区别总结

执行方式

是否需要执行权限

是否新开子进程

适用场景

./[test.sh](test.sh)

需要 chmod +x

新开子进程

日常自动化脚本、定时任务

bash [test.sh](test.sh)

不需要

新开子进程

临时调试、无权限文件

source   [test.sh](test.sh)

不需要

当前终端执行

加载环境变量、配置文件

二、核心语法:变量与输入输出

变量是 Shell 脚本的灵魂,分为普通变量、字符串处理、脚本传参特殊变量三部分,几乎所有自动化脚本都会用到。

1. 变量定义与使用

1)普通变量定义规则

1.等号左右不能有空格

2.变量名只能字母、数字、下划线,不能数字开头;

3.默认字符串类型,无需声明数据类型。

2)变量取值两种写法

3)只读变量 readonly

变量赋值后无法修改,固定常量使用:

4)删除变量 unset

释放变量占用内存,清空变量值:

2. 字符串处理

字符串是 Shell 最常用的数据类型,单引号、双引号、拼接、截取、替换全覆盖。

1)单引号 vs 双引号区别

单引号' ':原样输出内容,不会解析变量、转义字符

双引号" ":识别变量与转义符,日常开发首选

2)字符串拼接

3)获取字符串长度${#变量}

4)字符串截取

5)字符串替换

3. 脚本传参与特殊变量

运行脚本时向脚本外部传入参数,自动化批量处理、定时任务高频使用。

1)基础传参演示

创建param.sh,执行命令:bash param.sh java nginx mysql

2)内置特殊变量详解

特殊变量

含义说明

$0

当前脚本文件名称

$1$2$3...

 12个传入参数

$#

传入参数总个数

$*

所有传入参数,整体视为一串字符串

$@

所有传入参数,分开独立多个参数(循环首选)

$?

上一条命令执行返回状态,代表执行成功,非 0 代表失败

完整示例代码

运行与输出效果:

3)循环遍历所有传入参数

三、新手高频踩坑避坑指南

1.变量赋值等号带空格a = 1直接语法报错,必须a=1

2.拼接字符串不加 {}echo $name_backup系统会识别全新变量,正确写法${name}_backup

3.脚本忘记头部 #!/usr/bin/env bash:部分系统执行出现语法解析失败;

4.传参混淆@:循环遍历参数优先使用"$@",避免参数含空格被拆分错乱;

5.Windows记事本编辑脚本:换行符CRLF 会导致脚本运行异常,推荐vimVS Code 编辑。

四、全文总结

1.脚本创建执行.sh为标准后缀,头部必须加解释器声明;种执行方式按需选用,./脚本是线上主流;

2.变量基础:定义无空格,${变量}规范取值,readonly 只读、unset 删除变量;

3.字符串操作:双引号解析变量、单引号原样输出,支持截取、替换、长度计算;

4.脚本传参$1/$2获取入参,$#统计参数数量,$?判断命令执行是否成功,$@用于循环遍历所有参数。

本章节是 Shell 脚本入门核心基础,掌握创建、执行、变量、传参后,就能独立编写简单自动化脚本,清理日志、批量部署、服务监控都能轻松实现!

干货福利

需要我整理一份《Shell 变量 + 传参 + 字符串处理速查代码模板》吗?评论区回复【shell 变量】,免费领取,写脚本直接复制复用!

动动小手,点点关注呗~”🫰