數(shù)組中可以存放多個值。Bash Shell 只支持一維數(shù)組(不支持多維數(shù)組),初始化時不需要定義數(shù)組大?。ㄅc PHP 類似)。
與大部分編程語言類似,數(shù)組元素的下標(biāo)由0開始。
- 定義數(shù)組
Shell 數(shù)組用括號來表示,元素用"空格"符號分割開,語法格式如下:
array_name=(value1 ... valuen)
Shell 是弱類型的,它并不要求所有數(shù)組元素的類型必須相同,例如:
my_array=(1 2 "C" 4)
Shell 數(shù)組的長度不是固定的,定義之后還可以增加元素。例如,對于上面的 my_array 數(shù)組,它的長度是 4,使用下面的代碼會在最后增加一個元素,使其長度擴(kuò)展到 5:
my_array[4]="E"
此外,你也無需逐個元素地給數(shù)組賦值,下面的代碼就是只給特定元素賦值:
ages=([3]=24 [5]=19 [10]=12)
以上代碼就只給第 3、5、10 個元素賦值,所以數(shù)組長度是 3。
我們也可以使用下標(biāo)來定義數(shù)組:
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2
- 訪問數(shù)組
${array_name[index]}
注意:不能寫成 $array_name[index]的形式
示例
$ arr=(A B C D)
$ echo ${arr[2]}
C
- 獲取數(shù)組中的所有元素
使用${array_name[@]}或${array_name[*]}可以獲取數(shù)組中的所有元素,例如:
$ arr=(A B C D)
$ echo ${arr[*]}
A B C D
$ echo ${arr[@]}
A B C D
- 獲取數(shù)組的長度
可以通過${#my_array[@]}或${#my_array[*]}的形式獲取數(shù)組的長度,例如:
$ arr=(A B C D)
$ echo 數(shù)組的長度為: ${#arr[@]}
數(shù)組的長度為: 4
$ echo 數(shù)組的長度為: ${#arr[*]}
數(shù)組的長度為: 4
- 字符串轉(zhuǎn)數(shù)組
$ str="A B C D"
$ arr=(${str})
$ echo ${arr[*]}
A B C D
- 數(shù)組拷貝
array2=( "${array[@]}" )
- 數(shù)組拼接
可以使用(${arr1[@]} ${arr2[@]})或(${arr1[*]} ${arr2[*]})的方式將多個數(shù)組拼接成一個新的數(shù)組,示例:
$ arr1=(A B C D)
$ arr2=(1 2 3 4)
$ arr_new=(${arr1[*]} ${arr2[*]})
$ echo 合并后數(shù)組元素:${arr_new[*]}
合并后數(shù)組元素:A B C D 1 2 3 4
- 刪除數(shù)組元素
使用 unset 關(guān)鍵字來刪除數(shù)組元素,具體格式如下:
unset array_name[index]
其中,array_name 表示數(shù)組名,index 表示數(shù)組下標(biāo)。
如果不寫下標(biāo),而是寫成下面的形式:
unset array_name
那么就是刪除整個數(shù)組,所有元素都會消失。示例:
arr=(A B C D)
$ unset arr[1]
$ echo ${arr[*]}
A C D
$ unset arr
$ echo ${arr[*]}