Shell函数扩展之数组
一、shell数组概述
和其他编程语言一样,Shell 也支持数组。数组(Array)是若干数据的集合,其中的每一份数据都称为元素(Element)。
Shell 并且没有限制数组的大小,Shell 数组元素的下标也是从0开始计数。
获取数组中的元素要使用下标[ ],下标可以是一个整数,也可以是一个结果为整数的表达式;当然,下标必须大于等于 0。
二、数组格式
基本格式
数组名=(value0 value1 value2...)(最常用)
例如:ABC=(11 22 33...)
基本格式
数组名=([0]=value [1]=value [2]=value...)
例如:ABC=([0]=11 [1]=22 [2]=33...)
基本格式
列表名=“value0 value1 value2”
数组名=($列表名)
例如:
AAA=“11 22 33...”
ABC=($列表名)
基本格式
数组名[0]=“value”
数组名[1]=“value”
数组名[2]=“value”
例如:
AAA[0]=“11”
AAA[1]=“22”
AAA[2]=“33”
三、具体操作
1、查看
获取数组长度:
${#数组名[@/*]}
读取某下标赋值:
${数组名[下标]}
获取数组元素:
${数组名[*]}
${数组名[@]}
${a[索引]}
2、切片
[root@localhost ~]# a=(1 2 3 4 5 6 7)
[root@localhost ~]# echo ${a[*]:1:4} //从第二个开始取,取4个
2 3 4 5
3、替换
${数组名[@]/x/y} 最小匹配替换,每个元素只替换一次
${数组名[@]//x/y} 最大匹配替换,每个元素可替换多次
${数组名[@]/x/} 最小匹配删除,只删除一个符合规定的元素
${数组名[@]//x/} 最大匹配删除,可删除多个符合规定的元素
4、删除
删除数组,删除数组元素:
unset 数组名[索引]
unset 数组名
[root@localhost ~]# a=(A B C D E F)
[root@localhost ~]# unset a[2] # 删除索引为2的元素
[root@localhost ~]# echo ${a[@]} # 显示删除后的元素
A B D E F
5、遍历
#!/bin/bash
a=(1 2 3 4 5)
for i in ${a[*]}
do
echo $i
done
或
#!/bin/bash
a=(1 2 3 4 5)
for ((i=0;i<${#a[*]};i++))
do
echo ${a[$i]}
done