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