shell函数基础
data-ad-format="fluid" data-ad-layout-key="-7k+ex-4a-9w+4a">shell函数基础:学习如何在脚本中封装可重用代码块,提升效率与可维护性。
Shell 函数是脚本中封装可重用代码块的核心工具,可提升代码模块化、可读性和维护性。以下是关键知识点及操作示例(基于 Bash):
⚙️ 一、定义与调用
定义方式
标准语法(推荐) function_name() { command1 command2 } # 示例:打印欢迎信息 greet() { echo “Hello, $1!” }
使用 function 关键字 function greet { echo “Hello, $1!” }
调用函数
1 | greet "Alice" # 输出:Hello, Alice! |
📥 二、参数传递
访问参数
- 位置参数:$1(第一个参数)、$2(第二个)等
特殊变量:
$#:参数个数
$@:所有参数的独立列表
$*:所有参数合并为单个字符串
1 | sum() { |
默认参数
1 | # 若未传参则使用默认值 |
🔄 三、返回值处理
两种返回值方式
方式说明示例return返回整数状态码(0-255),通过 $? 获取echo输出任意数据,通过 $(函数) 捕获结果
示例对比:
1 | # 方式1:return(适合状态码) |
🔍 四、变量作用域
全局变量:默认所有变量全局有效 count=0 increment() { ((count++)); } increment; echo $count # 输出:1
局部变量:用 local 限制作用域 demo() { local var=”内部变量” echo “函数内: $var” } demo; echo “函数外: $var” # 输出:函数内: 内部变量 函数外: (空)
🔁 五、进阶技巧
1. 递归函数
1 | # 计算阶乘 |
2. 函数库
创建库文件 math_lib.sh:
1 | add() { echo $(( $1 + $2 )); } |
主脚本调用:
1 | source math_lib.sh |
3. 处理数组参数
1 | # 将数组元素展开为多个参数 |
⚠️ 六、注意事项
参数限制:
超过9个参数需用 ${10} 格式
含空格的参数需加引号:func “arg with space”
返回值陷阱:
return 仅支持 0-255 整数,超出值会取模(如 256→0)
$? 仅保存最近一条命令的退出状态
关联数组函数:需 Bash 4.0+ 并声明 declare -A
💎 总结
功能语法关键点定义函数func() { … }省略 function 时括号不可省参数传递$1, $@, ${10}含空格参数需引号包裹返回值return 状态码 或 echo 数据return 适合状态,echo 适合数据局部变量local var=value避免污染全局作用域
关联数组需 Bash 4.0+(查看版本:bash –version)。实际脚本中建议多用函数封装逻辑,减少重复代码 。
相关文章:Shell内置命令