乐于分享
好东西不私藏

软件测试笔记 | 自动化测试 | Shell脚本:函数创建与复用

软件测试笔记 | 自动化测试 | Shell脚本:函数创建与复用
“动动小手,点点关注呗~”👇

写自动化 Shell 脚本时,重复写大量相同代码会导致脚本冗长、难维护。Shell 函数就是用来封装重复逻辑,实现代码复用的核心工具。

本文完整讲解函数定义与调用函数返回值,搭配线上日志清理、服务检测实战案例,看完就能封装自己的通用脚本工具!

一、为什么要用 Shell 函数?

1.代码复用:重复执行的逻辑只写一次函数,多处直接调用,不用复制粘贴大量代码;

2.结构清晰:按功能拆分函数,日志、备份、监控分开封装,脚本可读性大幅提升;

3.便于维护:逻辑修改只需要改函数内部一处,所有调用位置同步生效;

4.支持传参与返回值:可传入自定义参数,执行完成后返回状态 / 结果,适配复杂自动化流程。

二、函数定义与调用(基础核心)

1. 两种标准函数定义语法

写法 1:标准推荐写法(企业通用)

写法 2:带 function 关键字写法,可读性更强

2. 函数基础调用规则

1.必须先定义,后调用:函数写在脚本前面,后面代码才能调用;

2.调用时直接写函数名,不需要加括号()

3.给函数传参直接在函数名后追加参数,用法和脚本外部传参一致(2$# 等)。

3. 最简入门示例

运行输出:

4. 实战封装:日志目录自动创建函数

日常脚本经常需要校验文件夹,封装成函数一键复用:

5. 函数内特殊参数说明

函数内部同样支持脚本内置特殊变量,只作用于本次函数调用:

变量

含义

2

函数调用时传入的第 1个参数

$#

本次调用传入参数总个数

$@

函数所有传入参数,循环遍历专用

$0

仍然代表脚本文件名,不是函数名

三、函数返回值两种实现方式

Shell 函数没有传统编程语言的 return 数据返回,分为状态返回值(return标准输出返回数据(echo两种场景,分工完全不同。

方式 1return 返回执行状态码(只能返回 0-255 数字)

1.规则:return 仅用于返回执行状态,代表执行成功,非 0 数字代表异常;

2.读取返回值:调用函数后通过$?捕获状态码;

3.限制:不能返回字符串、大数字,仅用于判断函数执行是否正常。

示例:判断文件是否存在,返回状态码

方式 2echo 输出返回字符串 / 数字(获取函数计算结果)

如果需要函数返回字符串、路径、计算数值等业务数据,使用 echo 打印输出,通过变量=$(函数名 参数)捕获输出内容。

示例 1:返回拼接后的日志文件名

示例 2:数字计算函数,返回运算结果

两种返回方式选型区分

1.return:仅判断执行成功失败,返回0-255 状态码,配合$?读取;

2.echo + $():获取函数业务结果(字符串、文件路径、计算数值),日常数据返回首选。

四、综合实战:完整自动化日志清理脚本(函数封装)

整合函数定义、传参、返回值,企业可直接上线使用

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

1.函数调用顺序错误:必须先写函数定义,再调用,否则会提示 command not found

2.混淆两种返回值用法return 不能返回字符串,想要获取文本结果只能用 echo 捕获;

3.\\函数传参混淆永远是脚本名,函数内部参数从 $1 开始;

4.echo多余输出干扰结果捕获:如果用$()捕获函数返回数据,函数内部不要多余 echo 打印,会混入返回变量;

5.return数值范围限制return仅支持0~255,超过范围会出现数值错乱。

六、全文总结

1.函数核心作用:封装重复代码,实现代码复用,拆分脚本逻辑,便于维护迭代;

2.函数定义与调用:两种定义语法,先定义后调用,传参使用2/$# 等内置变量;

3.两种返回机制

return:返回 0-255 执行状态码,$? 读取,用于判断执行成败;

echo + $(函数):捕获字符串、数字、路径等业务数据,数据返回首选;

掌握 Shell 函数后,你可以把日志清理、服务监控、文件备份等通用逻辑全部封装成独立函数,写出结构清晰、可复用、易维护的企业级自动化脚本。

干货福利

需要我整理一份《Shell 函数通用封装模板》吗?评论区回复【函数】,免费领取,写自动化脚本直接复制复用!

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