1. 程式人生 > >bash中的數組

bash中的數組

數組 bash

在shell中每一個變量名只能存儲一個數據,當為這個變量名進行重新賦值的時候,原先的數據就會丟失,所以我們需要數組這個東西。數組可以將很多的數據使用同一個名稱進行保存,相當於多個變量的集合,且在取用的時候很方便。接下來我們來說一說數組的賦值和取用的方法。數組分為稠密數組和稀疏數組,稠密數組就是索引編號必須連續,而稀疏數組的索引編號可以不連續,bash數組屬於這一類。

在bash中使用一個數組可以分為兩種情況,第一種是先進行聲明,然後再使用,第二種是不進行聲明,直接使用。聲明數組需要用到declare命令,這個命令是聲明變量的命令,在這裏使用“-a”或“-A”選項來聲明數組:

declare -a NAME:將NAME聲明為索引數組(如果支持)

declare -A NAME:將NAME聲明為關聯數組(如果支持)

或者不用聲明也可以直接使用(按照從頭開始的順序依次使用的叫做稠密數組,而跳著使用的叫做稀疏數組):

ARRAY_NAME=("value1" "value2" ...) ——聲明稠密數組

a=("123" "234" "345")

ARRAY_NAME=([0]="value1" [1]="value2" [5]="value3" ...) ——聲明稀疏數組

b=([1]="abc" [3]="cde")

賦值還可以像給變量賦值一樣

ARRAY_NAME[0]=value1

ARRAY_NAME[1]=value2

...

 ~]$ d[2]=b
 ~]$ echo ${d[*]}
b

在我們為數組賦值之後可以通過“echo ${數組名[一個數字]}”來查看,在中括號中的數字對應著數組中的變量,[email protected]據輸出。我們可以像使用變量那樣來使用數組,使用的方法是“${ARRAY_NAME[INNDEX]}”。

註意:如果不給出INDEX,則表示引用數組的第一個元素,即INDEX-0的元素


當要引用整個數組的所有元素的時候使用:${ARRAY_NAME[*]}或者${ARRAY_NAME[@]},使用這條命令之後會將數組中的所有元素按照順序輸出。

 ~]$ d[2]=b
 ~]$ d[4]=b
 ~]$ echo ${d[*]}
b b

引用數組的索引,使用:${!ARRAY_NAME[*]}或者${!ARRAY_NAME[@]},當使用這條命令時顯示的是在數組中被使用的那些變量的索引,比如下面這個例子中為數組中的第二個和第四個賦值那麽顯示出來的就是2和4.

 ~]$ d[2]=b
 ~]$ d[4]=b
 ~]$ echo ${!d[*]}
2 4

在有的時候,我們使用數組需要查看數組的長度,就可以使用下面這兩個命令,但是統計的是已經保存數據的那些變量,也就是數組中有效元素的個數。

${#ARRAY_NAME[*]}或者${#ARRAY_NAME[@]}

 ~]$ d[2]=b
 ~]$ d[4]=b
 ~]$ echo ${#d[*]}
2
 ~]$ echo ${#d[@]}
2

數組的使用其實和變量幾乎相同,對於變量的操作對於數組同樣適用,但是在一些重復性的操作中數組能夠發揮極其巨大的作用。

bash中的數組