shell数组

一、数组定义

一对括号表示数组,数组元素用“空格”符号分割开

[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


你可能感兴趣的:(数组)