Shell 陣列與關聯數組詳解及實例程式碼

高洛峰
發布: 2023-03-05 15:02:01
原創
1062 人瀏覽過

Shell 數組與關聯數組

1.數組

1.1. 數組定義

一對圓括號表示數組,數組元素之間用空格符號分割

xiaosi@Qunar:~$ a=(1 2 3)
xiaosi@Qunar:~$ echo $a
1
xiaosi@Qunar:~$ a=("yoona" "lucy" "tom")
xiaosi@Qunar:~$ echo $a
yoona
登入後複製

1.2. 數組數

長度:用${#數組名[@或*]} 可以得到數組長度

xiaosi@Qunar:~$ echo ${#a[@]}
3
xiaosi@Qunar:~$ echo ${#a[*]}
3
登入後複製

獲取元素:用${數組名[下標]} 得到數組元素(下標從0開始),下標為*或者@得到整個數組內容

xiaosi@Qunar:~$ array=("yoona" "lucy" "tom")
xiaosi@Qunar:~$ echo ${array[0]}
yoona
xiaosi@Qunar:~$ echo ${array[1]}
lucy
xiaosi@Qunar:~$ echo ${array[*]}
yoona lucy tom
xiaosi@Qunar:~$ echo ${array[@]}
yoona lucy tom
登入後複製

賦值:通過數組名[下標]可以對其進行引用賦值,如果下標不存在,自動添加新一個數組元素

xiaosi@Qunar:~$ array=("yoona" "lucy" "tom")
xiaosi@Qunar:~$ echo ${array[2]}
tom
xiaosi@Qunar:~$ array[2]=lily
xiaosi@Qunar:~$ echo ${array[2]}
lily
登入後複製

刪除:通過unset陣列[下標]可以清除對應的元素,不帶下標則清除全部資料

xiaosi@Qunar:~$ array=("yoona" "lucy" "tom")
xiaosi@Qunar:~$ unset array[1]
xiaosi@Qunar:~$ echo ${array[*]}
yoona tom
xiaosi@Qunar:~$ unset array
xiaosi@Qunar:~$ echo ${array[*]}
xiaosi@Qunar:~$
登入後複製

1.3. 取得某範圍的元素

直接透過${陣列名稱[@或*]:起始位置:長度} 取得陣列給定範圍內元素,傳回字串,中間用空格分開

xiaosi@Qunar:~$ array=(yoona lucy tom)
xiaosi@Qunar:~$ echo ${array[*]}
yoona lucy tom
xiaosi@Qunar:~$ echo ${array[*]:1:2}
lucy tom
xiaosi@Qunar:~$ echo ${array[@]:0:1}
yoona
登入後複製

1.4. 取代

${陣列名稱[@或*]/找出字元/取代原字元} 此運算元不會改變原數組內容,如果需要修改,可以看上面例子

xiaosi@Qunar:~$ array=(yoona lucy tom)
xiaosi@Qunar:~$ echo ${array[@]/lucy/lily}
yoona lily tom
xiaosi@Qunar:~$ echo ${array[@]}
yoona lucy tom
登入後複製

2. 關聯數組

Bash支援關聯數組,它可以使用字串作為數組索引,有時採用字串索引更容易理解。

2.1 定義關聯數組

首先需要使用宣告語句將一個變數宣告為關聯數組。

xiaosi@Qunar:~$ declare -A assArray
登入後複製

聲明之後,可以有兩種方法將元素加入關聯數組。


(1)利用內嵌索引-值列表的方法

xiaosi@Qunar:~$ assArray=([lucy]=beijing [yoona]=shanghai)
xiaosi@Qunar:~$ echo ${assArray[lucy]}
beijing
登入後複製

(2)使用獨立的索引-值進行賦值

xiaosi@Qunar:~$ assArray[lily]=shandong
xiaosi@Qunar:~$ assArray[sunny]=xian
xiaosi@Qunar:~$ echo ${assArray[sunny]}
xian
xiaosi@Qunar:~$ echo ${assArray[lily]}
shandong
登入後複製

2.2 列出數組索引

xiaosi@Qunar:~$ echo ${!assArray[*]}
lily yoona sunny lucy
xiaosi@Qunar:~$ echo ${!assArray[@]}
lily yoona sunny lucy
登入後複製

2.2 列出數組索引

元用於查找。使用${!數組名稱[@或*]}取得陣列的索引列表

#! /bin/bash
declare -A cityArray
cityArray=([yoona]=beijing [lucy]=shanghai [lily]=shandong)
for key in ${!cityArray[*]}
do
 echo "${key} come from ${cityArray[$key]}"
done
登入後複製

2.3 取得所有鍵值對

xiaosi@Qunar:~/company/sh$ bash array.sh
lily come from shandong
yoona come from beijing
lucy come from shanghai
登入後複製

結果:rrreee

,謝謝大家對本站的支持!

更多Shell 數組與關聯數組詳解及實例代碼相關文章請關注PHP中文網!


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!