Linux 数组

时间:2023-03-08 17:23:43
Linux 数组

200 ? "200px" : this.width)!important;}
-->

:介绍

在shell4.0之后支持普通数组和关联数组,普通数组只能使用整数作为索引,关联数组可以使用字符串作为索引。

普通数组

普通数组的定义方法有如下两种,注意数组的索引是从0开始

方法1:值之间是使用空格隔开

array=(1 2 3 4 5)

方法2:直接定义索引-值的方法,其实该方法相当于是在给数组元素赋值。

array[0]="value"

array[1]="value"

1.查看单个数组元素值,值的下标从0开始。

[root@localhost backup]# echo ${array[]}

2.查询数组所有元素的值,使用*或者@

[root@localhost backup]# echo ${array[*]}

[root@localhost backup]# echo ${array[@]}
    

3.查询数组元素的个数,#

[root@localhost backup]# echo ${#array[*]}

4.改变数组元素的值

[root@localhost backup]# array[2]="33"
[root@localhost backup]# echo ${array[*]}

5.定义索引并引用

[root@localhost backup]# i=
[root@localhost backup]# echo ${array[$i]}

6.查询数组的索引,使用!

[root@localhost backup]# echo ${!array[*]}
    

关联数组

普通数组的索引只能是整数,比如array[0],array[1]等,关联数组的索引可以是字符串,使用关联数组之前必须先声明关联数组。

声明关联数组:

declare -A ass_array

将元素添加到关联数组,方法有两种:

方法1:列表发赋值

ass_array=( [index1]=val1 [index2]=val2)

方法2:单独赋值

ass_array[index1]=val1

ass_array[index2]=val2

举例:

declare -A ass_array
ass_array=([book]="10 yuan" [pen]="1 yuan")

1.显示单个数组元素内容

[root@localhost backup]# echo ${ass_array[book]}
yuan

2.查询关联数组所有元素内容

echo ${ass_array[*]}
yuan yuan

3.查询关联数组的索引,在数组前使用!

[root@localhost backup]# echo ${!ass_array[*]}
pen book

4.查询关联数组的元素个数

[root@localhost backup]# echo ${#ass_array[*]}

动态数组生成方法

方法1:

可以使用seq

[root@localhost backup]# numarray=$(seq )
[root@localhost backup]# echo $numarray

方法2:

[root@localhost backup]# echo {..}
                                                                                                   

这两种定义的动态数组可以直接在循环中调用,例如:

for i in $mumarray;do echo $i;done;

for i in {..};do echo $i;done;

测试二者的效率,可以在其前面加上time

time echo $(seq )

real    0m0.056s
user 0m0.047s
sys 0m0.002s
time echo {..}

real    0m0.030s
user 0m0.023s
sys 0m0.000s

测试10000个元素,显然第二种方法性能会更好。

总结

普通数组和关联数组只是定义的方法不一样,查询的方法是一样的。

备注:

作者:pursuer.chen

博客:http://www.cnblogs.com/chenmh

本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。

《欢迎交流讨论》