:介紹 在shell4.0之後支持普通數組和關聯數組,普通數組只能使用整數作為索引,關聯數組可以使用字元串作為索引。 普通數組 普通數組的定義方法有如下兩種,註意數組的索引是從0開始 方法1:值之間是使用空格隔開 array=(1 2 3 4 5) 方法2:直接定義索引-值的方法,其實該方法相當於是 ...
:介紹
在shell4.0之後支持普通數組和關聯數組,普通數組只能使用整數作為索引,關聯數組可以使用字元串作為索引。
普通數組
普通數組的定義方法有如下兩種,註意數組的索引是從0開始
方法1:值之間是使用空格隔開
array=(1 2 3 4 5)
方法2:直接定義索引-值的方法,其實該方法相當於是在給數組元素賦值。
array[0]="value"
array[1]="value"
1.查看單個數組元素值,值的下標從0開始。
[root@localhost backup]# echo ${array[0]} 1
2.查詢數組所有元素的值,使用*或者@
[root@localhost backup]# echo ${array[*]} 1 2 3 4 5 [root@localhost backup]# echo ${array[@]} 1 2 3 4 5
3.查詢數組元素的個數,#
[root@localhost backup]# echo ${#array[*]} 5
4.改變數組元素的值
[root@localhost backup]# array[2]="33" [root@localhost backup]# echo ${array[*]} 1 2 33 4 5
5.定義索引並引用
[root@localhost backup]# i=3 [root@localhost backup]# echo ${array[$i]} 4
6.查詢數組的索引,使用!
[root@localhost backup]# echo ${!array[*]} 0 1 2 3 4
關聯數組
普通數組的索引只能是整數,比如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]} 10 yuan
2.查詢關聯數組所有元素內容
echo ${ass_array[*]} 1 yuan 10 yuan
3.查詢關聯數組的索引,在數組前使用!
[root@localhost backup]# echo ${!ass_array[*]}
pen book
4.查詢關聯數組的元素個數
[root@localhost backup]# echo ${#ass_array[*]} 2
動態數組生成方法
方法1:
可以使用seq[root@localhost backup]# numarray=$(seq 100) [root@localhost backup]# echo $numarray 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
方法2:
[root@localhost backup]# echo {1..100} 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
這兩種定義的動態數組可以直接在迴圈中調用,例如:
for i in $mumarray;do echo $i;done; for i in {1..100};do echo $i;done;
測試二者的效率,可以在其前面加上time
time echo $(seq 10000) real 0m0.056s user 0m0.047s sys 0m0.002s
time echo {1..10000} real 0m0.030s user 0m0.023s sys 0m0.000s
測試10000個元素,顯然第二種方法性能會更好。
總結
普通數組和關聯數組只是定義的方法不一樣,查詢的方法是一樣的。
備註: 作者:pursuer.chen 博客:http://www.cnblogs.com/chenmh 本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明鏈接。 《歡迎交流討論》 |