shell 数组
2016-10-16
shell 数组
(1)数组定义,一对儿括号表示是数组,数组元素用 空格 分隔开。
[root@133 ~]# a=(1 2 3 4 5)
[root@133 ~]# echo $a
1
(2)数组的读取
获取数组的元素个数
[root@133 ~]# echo ${#a[@]}
5
[root@133 ~]# echo ${#a[*]}
5
读取数组中的某一个元素,数标从 0 开始,a[0]是第一个元素
[root@133 ~]# echo ${a[0]}
1
[root@133 ~]# echo ${a[3]}
4
打印整个数组的元素,或者使用 echo ${a[@]}
[root@133 ~]# echo ${a[@]}
1 2 3 4 5
[root@133 ~]# echo ${a[*]}
1 2 3 4 5
(3)数组赋值
[root@133 ~]# a[1]=100
[root@133 ~]# echo ${a[*]}
1 100 3 4 5
[root@133 ~]# a[5]=100
[root@133 ~]# echo ${a[*]}
1 100 3 4 5 100
直接通过数组名[下标]就可以对其进行引用赋值,如果下标不存在,自动添加新的一个数组元素。
(4)数组的删除
[root@133 ~]# a=(1 2 3 4 5)
[root@133 ~]# unset a
[root@133 ~]# echo ${a[*]}
[root@133 ~]# a=(1 2 3 4 5)
[root@133 ~]# unset a[1]
[root@133 ~]# echo ${a[*]}
1 3 4 5
[root@133 ~]# echo ${#a[*]}
4
(5)数组分片
[root@133 ~]# a=(`seq 1 5`)
[root@133 ~]# echo ${a[@]:0:3}
1 2 3
[root@133 ~]# echo ${a[@]:1:4}
2 3 4 5
[root@133 ~]# echo ${a[@]:0:4}
1 2 3 4
[root@133 ~]# echo ${a[@]:0:2}
1 2
[root@133 ~]# echo ${a[@]:1:2}
2 3
[root@133 ~]# echo ${a[@]:2:4}
3 4 5
[root@133 ~]# a[5]=6
[root@133 ~]# echo ${a[@]:2:4}
3 4 5 6
(6)数组替换,可以 echo 替换,也可以直接赋值
[root@133 ~]# a=(1 2 3 4 5)
[root@133 ~]# echo ${a[@]/3/100}
1 2 100 4 5
[root@133 ~]# echo ${a[@]}
1 2 3 4 5
[root@133 ~]# a=(${a[@]/3/100})
[root@133 ~]# echo ${a[@]}
1 2 100 4 5