版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/SunnyYoona/article/details/51526312
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.3 擷取所有鍵值對
-
#! /bin/bash
-
declare -A cityArray
-
cityArray=([yoona]=beijing [lucy]=shanghai [lily]=shandong)
-
for key in ${!cityArray[*]}
-
do
-
echo "${key} come from ${cityArray[$key]}"
-
done
結果:
-
xiaosi@Qunar:~/company/sh$ bash array.sh
-
lily come from shandong
-
yoona come from beijing
-
lucy come from shanghai