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