Shell 数组变量详解
在 Shell 脚本开发中,数组是处理批量数据的核心工具。它与普通变量的最大区别在于存储能力:普通变量一次只能承载一个值,而数组可以容纳多个值。例如,普通变量 ip=192.168.81.210 只能存一个 IP,而数组 ips=("192.168.81.210" "192.168.81.220") 则能管理整个网段。此外,普通变量通常按字符索引,而数组索引从 0 开始,既可以是整数也可以是字符串(后者即关联数组)。
普通数组
普通数组是最常用的形式,索引默认为整数。
定义方式
可以直接指定下标赋值,也可以一次性初始化列表。
# 方式一:逐个赋值
array1[0]=pear
array1[1]=apple
array1[2]=orange
array1[3]=peach
# 方式二:整体初始化(推荐)
array1=(pear apple orange peach)
查看与操作
获取数组长度、遍历元素都是高频操作。注意引用数组元素时务必加上花括号,避免解析错误。
# 获取第一个元素
echo "${array1[0]}"
# 获取所有元素
echo "${array1[@]}"
# 获取数组长度
echo "${#array1[@]}"
默认情况下,直接输出变量名可能只显示第一个元素,所以一定要用 ${array1[@]} 来确保拿到全部内容。
关联数组
当需要更语义化的索引(如用户名、ID)时,关联数组派得上用场。它允许使用字符串作为键。
定义与使用
声明关联数组需要使用 -A 选项,语法与普通数组略有不同。
# 声明并初始化
declare -A info
info[name]=test_user
info[sex]=male
# 访问特定键
echo "${info[name]}"
注意事项
- 引号保护:包含空格的值建议加双引号,防止被拆分。
- 版本兼容:关联数组功能主要依赖 Bash 4.0+,旧版系统可能不支持。
- 键的唯一性:同一个键不能重复赋值,后赋的值会覆盖前者。
掌握这些基础用法,能让你的 Shell 脚本在处理配置项或列表数据时更加高效。

