4.1 函数与参数传递
4.1 函数与参数传递
一、函数基础
函数用于封装可重复执行的代码块,能够提高 Shell 脚本的可维护性与复用性。在大型运维脚本中,函数通常用于拆分业务逻辑,实现模块化管理。
Shell 函数基本语法:
1 | |
调用函数:
1 | |
示例:
1 | |
二、函数定义规则
Shell 从上到下解析脚本,因此函数必须先定义再调用。
错误示例:
1 | |
正确示例:
1 | |
三、函数参数
函数支持位置参数,与脚本参数用法一致。
基本参数
1 | |
输出:
1 | |
多参数处理
1 | |
常用参数变量:
| 参数 | 含义 |
|---|---|
$1 |
第一个参数 |
$2 |
第二个参数 |
$# |
参数数量 |
$@ |
全部参数 |
四、return 与退出状态码
Shell 中 return 返回的是状态码,而不是字符串。
范围:
1 | |
约定:
0表示成功- 非
0表示失败
示例:
1 | |
输出:
1 | |
五、函数返回数据
Shell 通常通过 echo 输出结果,再使用命令替换获取。
示例:
1 | |
这是 Shell 获取函数执行结果的标准方式。
六、局部变量与全局变量
默认情况下,Shell 变量属于全局变量。
示例:
1 | |
输出:
1 | |
函数内部修改了全局变量。
local 局部变量
推荐在函数内部使用 local 限制变量作用域。
1 | |
局部变量仅在函数内部有效,可避免大型脚本中的变量污染问题。
七、模块化脚本结构
复杂脚本应按功能拆分为多个函数,而不是将所有命令堆叠在一起。
示例:
1 | |
这种结构更适合维护和扩展。
八、exit 与 return 的区别
return
用于结束函数执行。
1 | |
exit
用于结束整个脚本。
1 | |
示例:
1 | |
脚本会在 exit 后直接终止。
九、source 加载公共函数
Shell 支持加载外部脚本,实现函数复用。
公共函数文件
1 | |
主脚本
1 | |
等价写法:
1 | |
这种方式常用于运维脚本公共函数库。
十、批量设备检测示例
下面是一个典型的 Shell 运维脚本结构:
1 | |
该脚本综合使用了:
- 函数
- 参数传递
- local 变量
- 数组
- for 循环
- if 判断
- 状态码
$?
这是实际 Linux 运维自动化脚本中的常见结构。
十一、main 函数规范
工程化 Shell 脚本通常采用 main() 作为程序入口。
示例:
1 | |
优点:
- 结构清晰
- 易于维护
- 易于扩展
- 接近标准编程语言设计
十二、总结
函数是 Shell 脚本模块化开发的重要基础。掌握函数后,可以将复杂脚本拆分为独立功能模块,提高代码复用率与可维护性。
核心内容包括:
- 函数定义与调用
- 参数传递
- return 与 exit
- 局部变量
- source 模块加载
- main 函数结构
- 运维自动化脚本组织方式
4.1 函数与参数传递
https://blog.sh462li.top/2026/06/05/Shell_learn/4.1 函数与参数传递/