在 Linux 系统管理和自动化脚本编写中,Shell 脚本是非常重要的工具。而要写出高效、可维护的脚本,掌握数组和函数参数传递是必不可少的技能。本文将用通俗易懂的方式,带你从零开始学习如何在 Bash Shell 中使用数组,并正确地将数组作为参数传递给函数。
在 Bash 中,数组是一种可以存储多个值的变量类型。和其他编程语言类似,Shell 数组也支持索引访问,但默认是从 0 开始的。
你可以用以下几种方式创建数组:
# 方法1:直接赋值fruits=("苹果" "香蕉" "橙子")# 方法2:逐个赋值animals[0]="猫"animals[1]="狗"animals[2]="鸟"# 方法3:使用 declare 命令declare -a colors=("红" "绿" "蓝") 使用 ${array[index]} 来获取特定元素:
echo ${fruits[0]} # 输出:苹果echo ${fruits[@]} # 输出所有元素:苹果 香蕉 橙子echo ${#fruits[@]} # 输出数组长度:3 函数是组织代码、提高复用性的重要手段。在 Bash 中定义函数非常简单:
greet() { echo "你好,$1!"}greet "小明" # 输出:你好,小明! 注意:函数参数通过 $1、$2... 来访问,$@ 表示所有参数。
这是很多初学者容易困惑的地方。因为 Bash 函数不能直接“接收”一个数组变量,但我们可以巧妙地传递数组内容。
使用 "${array[@]}" 将数组展开为多个参数传入函数:
print_array() { local arr=($@) # 将所有参数重新组合成数组 for item in "${arr[@]}"; do echo "- $item" done}my_list=("Linux" "Shell数组" "函数参数传递" "Bash脚本编程")print_array "${my_list[@]}" 输出结果:
- Linux- Shell数组- 函数参数传递- Bash脚本编程 "${array[@]}",否则含有空格的元素会被拆分。local arr=($@) 或 local arr=("$@") 重建数组。func my_array),这只会传递字符串 "my_array"。假设你有一组关键词,需要检查日志中是否包含它们:
check_keywords() { local keywords=($@) local logfile="/var/log/syslog" for kw in "${keywords[@]}"; do if grep -q "$kw" "$logfile" 2>/dev/null; then echo "✓ 找到关键词: $kw" else echo "✗ 未找到关键词: $kw" fi done}# 定义关键词数组search_terms=("error" "warning" "failed" "Shell脚本编程")# 调用函数check_keywords "${search_terms[@]}" 通过本文,你已经掌握了:
记住:关键在于使用 "${array[@]}" 展开数组,并在函数内部用 local new_arr=($@) 重建。多加练习,你就能轻松驾驭复杂的 Shell 脚本了!
关键词:Linux Shell数组、Shell函数参数传递、Bash数组操作、Shell脚本编程
本文由主机测评网于2025-11-29发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/2025111295.html