1. 程式人生 > >03.shell陣列

03.shell陣列

1.Shell 陣列

bash支援一維陣列(不支援多維陣列),並且沒有限定陣列的大小。

類似與C語言,陣列元素的下標由0開始編號。獲取陣列中的元素要利用下標,下標可以是整數或算術表示式,其值應大於或等於0。

1.1定義陣列

在Shell中,用括號來表示陣列,陣列元素用"空格"符號分割開。定義陣列的一般形式為:

陣列名=(值1 值2 ... 值n)

例如:array_name=(value0 value1 value2 value3)

array_name=( value0 value1 value2 value3 )

還可以單獨定義陣列的各個分量:

array_name[0]=value0 array_name[1]=value1 array_name[n]=valuen

可以不使用連續的下標,而且下標的範圍沒有限制。

1.2讀取陣列

讀取陣列元素值的一般格式是:

${陣列名[下標]}

例如:valuen=${array_name[n]}

使用@符號可以獲取陣列中的所有元素,例如:echo ${array_name[@]}

1.3獲取陣列的長度

獲取陣列長度的方法與獲取字串長度的方法相同,例如:

# 取得陣列元素的個數 length=${#array_name[@]}

# 或者 length=${#array_name[*]} # 取得陣列單個元素的長度 lengthn=${#array_name[n]}

1.4遍歷陣列

let:進行算數運算操作

#!/bin/bash my_arry=(a b "c","d" abc) echo "-------FOR迴圈遍歷輸出陣列--------" for i in ${my_arry[@]}; do echo $i done echo "-------::::WHILE迴圈輸出 使用 let i++ 自增:::::---------" j=0 while [ $j -lt ${#my_arry[@]} ] do echo ${my_arry[$j]} let j++ done echo "--------:::WHILE迴圈輸出 使用 let "n++ "自增: 多了雙引號,其實不用也可以:::---------" n=0 while [ $n -lt ${#my_arry[@]} ] do echo ${my_arry[$n]} let "n++" done echo "---------::::WHILE迴圈輸出 使用 let m+=1 自增,這種寫法其他程式設計中也常用::::----------" m=0 while [ $m -lt ${#my_arry[@]} ] do echo ${my_arry[$m]} let m+=1 done echo "-------::WHILE迴圈輸出 使用 a=$[$a+1] 自增,個人覺得這種寫法比較麻煩::::----------" a=0 while [ $a -lt ${#my_arry[@]} ] do echo ${my_arry[$a]} a=$[$a+1] done