Shell 在編程方面比 Windows 批處理強(qiáng)大很多,無(wú)論是在循環(huán)、運(yùn)算。
bash 支持一維數(shù)組(不支持多維數(shù)組),并且沒(méi)有限定數(shù)組的大小。類(lèi)似與 C 語(yǔ)言,數(shù)組元素的下標(biāo)由0開(kāi)始編號(hào)。獲取數(shù)組中的元素要利用下標(biāo),下標(biāo)可以是整數(shù)或算術(shù)表達(dá)式,其值應(yīng)大于或等于0。
在 Shell 中,用括號(hào)來(lái)表示數(shù)組,數(shù)組元素用“空格”符號(hào)分割開(kāi)。定義數(shù)組的一般形式為:
array_name=(value1 ... valuen)
例如:
array_name=(value0 value1 value2 value3)
或者
array_name=(
value0
value1
value2
value3
)
還可以單獨(dú)定義數(shù)組的各個(gè)分量:
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2
可以不使用連續(xù)的下標(biāo),而且下標(biāo)的范圍沒(méi)有限制。
讀取數(shù)組元素值的一般格式是:
${array_name[index]}
例如:
valuen=${array_name[2]}
舉個(gè)例子:
#!/bin/sh
NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
echo "First Index: ${NAME[0]}"
echo "Second Index: ${NAME[1]}"
運(yùn)行腳本,輸出:
$./test.sh
First Index: Zara
Second Index: Qadir
使用@或*可以獲取數(shù)組中的所有元素,例如:
${array_name[*]}
${array_name[@]}
舉個(gè)例子:
#!/bin/sh
NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
echo "First Method: ${NAME[*]}"
echo "Second Method: ${NAME[@]}"
運(yùn)行腳本,輸出:
$./test.sh
First Method: Zara Qadir Mahnaz Ayan Daisy
Second Method: Zara Qadir Mahnaz Ayan Daisy
獲取數(shù)組長(zhǎng)度的方法與獲取字符串長(zhǎng)度的方法相同,例如:
# 取得數(shù)組元素的個(gè)數(shù)
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得數(shù)組單個(gè)元素的長(zhǎng)度
lengthn=${#array_name[n]}