1、基础知识
1.1、数组
bash支持一维数组(不支持多维数组),并且没有限定数组的大小。数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0.
在shell中,数组也称为 关联数组,因为它是将 变量名和值关联在一起了。
1.2、作用
将一个范围的数据放在一起,进行批量管理分类。
数组按照表现形式上,可以划分为:
有序数组(普通数组) - 所有元素按照顺序依次排列
无序数组 - 元素的不按照顺序排列,可以有间隔,即 1 3 5 等,中间找不到 2 4
1.3、常见操作
1.3.1、创建数组
定制空数组 declare -a array_name
定制数组 array_name=(value1 ... valuen)
定制数组(单值) array_name[0]=value0
定制稀疏数组 array_name=([index1]=v1 [index3]=v3 [index7]=v7)
1.3.2、查看数组
获取具体内容 ${array_name[index]}
获取长度 ${#array_name[index]}
获取内容的部分信息 ${array_name[index]:pos:length}
获取所有索引 ${!array_name[@]}
1.3.3、更改数组
更改具体值 array_name[index]=值
部分内容替换 ${array_name[index]/原内容/新内容}
1.3.4、删除数组
删除具体值 unset array_name[index]
删除整个数组 unset array_name
2、实践
2.1、创建数组
# 标准创建
array_name=(value0 value1 value2 value3)
# 逐个增加
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2
# 无序,稀疏数组
array_name=([0]=v1 [2]=v2 [4]=v4)
技巧 - 把指定目录下的所有文件动态添加到数组中
array=($(ls /tmp/))
for i in ${!array[@]};do echo ${array[i]}; done
2.2、查看数组
# 查看指定位置元素
echo ${array_name[1]}
注意:索引的值是从 0 开始计算的
# 查看所有位置元素
echo ${array_name[@]}
echo ${array_name[*]}
# 获取所有位置的索引号
echo ${!array_name[*]}
# 获取元素数量
echo ${#array_name[1]}
echo ${#array_name[@]}
echo ${#array_name[*]}
# 获取元素的部分信息
echo ${array_name[2]:0:2}
2.3、修改数组
# 单值更改
array_name[1]=444
echo ${array_name[1]}
# 内容更改
echo ${array_name[2]}
# 查询修改
echo ${array_name[2]/va/hahhah}
2.4、删除数组
# 删除单个元素
unset array_name[1]
# 删除整个数组
unset array_name