您的位置:首页 > 运维架构 > Shell

shell数组

2015-10-21 12:54 399 查看
一、数组定义
一对括号表示数组,数组元素用“空格”符号分割开
[root@localhost ~]# a=(1 2 3 4 5)

[root@localhost ~]# echo $a
1
二、数据读取和赋值
1、得到长度,用${#数组名[@或*]}可以得到数组长度
[root@localhost ~]# a=(1 2 3 4 5)
[root@localhost ~]# echo ${#a[*]}
5
[root@localhost ~]# echo ${#a[@]}
5
2、读取,用${数组名[下标]}可以读取数据,下标是从0开始的,下标为*或@时得到整个数组内容
[root@localhost ~]# echo ${a[2]}
3
[root@localhost ~]# echo ${a[*]}
1 2 3 4 5
3、赋值,直接通过数组名[下标]就可以对其进行引用赋值a[1]=,如果下标不存在时,自动添加一个新数据元素
[root@localhost ~]# a[1]=100
[root@localhost ~]# echo ${a[*]}
1 100 3 4 5
4、删除,通过unset 数组名[下标]可以清除相应的元素,如果不加下标则清除整个数组。
[root@localhost ~]# a=(1 2 3 4 5)
[root@localhost ~]# unset a[2]
[root@localhost ~]# echo ${a[*]}
1 2 4 5
[root@localhost ~]# unset a
[root@localhost ~]# echo ${a[*]}
三、特殊使用
1、分片,通过${数组名[*或@]:下标起始位置:长度}切片原始数据,得到的是字符串中间以空格间隔,如果加()括号将得到切片数组,如c
[root@localhost ~]# a=(1 2 3 4 5)
[root@localhost ~]# echo ${a[*]:0:3}
1 2 3
[root@localhost ~]# c=(${a[*]:1:4})
[root@localhost ~]# echo ${c[*]}
2 3 4 5
2、替换,通过${a[*或@]/查找字符/替换字符}进行替换,但不不修改原数据,如果想得到替换后的数组,可以通过()重新定义数据,如c
[root@localhost ~]# echo ${a[*]/3/100}
1 2 100 4 5
[root@localhost ~]# c=(${a[*]/4/100})
[root@localhost ~]# echo ${c[*]}
1 2 3 100 5
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数组