Shell數(shù)組

數(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[*]}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容