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} yoona1.4. 取代${陣列名稱[@或*]/找出字元/取代原字元} 此運算元不會改變原數組內容,如果需要修改,可以看上面例子
xiaosi@Qunar:~$ array=(yoona lucy tom) xiaosi@Qunar:~$ echo ${array[@]/lucy/lily} yoona lily tom xiaosi@Qunar:~$ echo ${array[@]} yoona lucy tom2. 關聯數組Bash支援關聯數組,它可以使用字串作為數組索引,有時採用字串索引更容易理解。 2.1 定義關聯數組首先需要使用宣告語句將一個變數宣告為關聯數組。
xiaosi@Qunar:~$ declare -A assArray聲明之後,可以有兩種方法將元素加入關聯數組。
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]} shandong2.2 列出數組索引
xiaosi@Qunar:~$ echo ${!assArray[*]} lily yoona sunny lucy xiaosi@Qunar:~$ echo ${!assArray[@]} lily yoona sunny lucy2.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中文網!