Shell编程之数组
在 Shell中数组分为 普通数组、关联数组 两种
普通数组的索引只能是整数类型,下标从0开始
关联数组的索引可以使用字符串类型,Bash从4.0版本开始支持关联数组
定义数组
1 | 定义普通数组 |
初始化数组
普通数组1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 方式一
使用默认分隔符(IFS)初始化数组
可以不定义(declare -a),而直接初始化数组
arr=(a b c)
自定义分隔符初始化数组
数组必须先定义,后赋值
OLDIFS=$IFS
IFS=','
declare -a arr2=(a,b,c)
IFS=$OLDIFS
方式二
可以不定义,而直接初始化
arr3[0]=a
arr3[1]=b
arr3[2]=c
关联数组1
2
3
4
5
6
7
8
9
10 方式一
可以不定义,而直接初始化
arr=([index1]=1 [index2]=2 [index3]=3)
方式二
根据元素索引进行初始化
若定义的下标不能转换为数值,则数组必须先定义后赋值,否则下标默认转换为0
arr2['1']=a
arr2['2']=b
arr2['3']=c
读取数组
普通数组与关联数组通用操作1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 获取特定元素
echo ${array[index]}
获取数组中所有元素
echo ${array[@]}
echo ${array[*]}
获取数组索引
echo ${!array[@]}
echo ${!array[*]}
获取数组长度
echo ${#array[*]}
echo ${#array[@]}
遍历数组
使用for循环遍历数组,只能使用 ${array[@]},而不能使用 ${array[*]}
for i in "${array[@]}"; do
echo $i
done