Shell 数组

bash支持一维数组(不支持多维数组),并且没有限定数组的大小,初始化时不需要定义数组大小。
数组元素的下标

  • 由 0 开始编号,应大于或等于0
  • 可以不使用连续的下标
  • 下标的范围没有限制
  • 获取数组中的元素要利用下标

定义数组

在Shell中,用括号来表示数组,数组元素用”空格”符号分割开。定义数组的一般形式为:数组名=(值1 值2 ... 值n),例如:

1
2
3
4
5
6
7
8
array_name=(value0 value1 value2 value3)
array_name=(
value0
value1
value2
value3
)

还可以单独定义数组的各个分量:

1
2
3
array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen

读取数组

读取数组元素值的一般格式是:${数组名[下标]} 例如:

1
valuen=${array_name[n]}

使用@符号可以获取数组中的所有元素,例如:

1
echo ${array_name[@]}

获取数组的长度

获取数组长度的方法与获取字符串长度的方法相同,例如:

1
2
3
4
5
6
# 取得数组元素的个数
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得数组单个元素的长度
lengthn=${#array_name[n]}