在shell腳本里面,bash雖然對數組元素個數沒有限制,但其只支持一維數組。不過能夠使用一些小技巧來模擬二維數組。其實二維數組在本質上等同於一維數組,只不過增長了使用行和列的未知來引用和操做元素的尋址模式。下面我經過幾個簡單列子演示一下。
shell
實驗一:數組
#!/bin/bash # #初始化定義三個數組 arry1=(A B C) arry2=(D E F) arry3=(G H I) # #使用for循環來讀取數組中元素的個數,每次讀取完一個數組將其打印到屏幕上並繼續讀取 for ((i=0;i<4;i++)) do eval value=\${arry${i}[@]} for element in ${value} do echo -e ${value} continue 2 done done echo exit 0
運行結果:bash
實驗二:ide
#!/bin/bash # #定義三個一維數組 array1="A B C" array2="D E F" array3="G H I" # #使用for語句來循環讀取所定義的數組中的元素並暫存到變量i中 #將暫存在變量i中的元素賦予變量value #使用for語句讀取變量value中的值 每次讀取完後都打印到標準輸出直到讀取完成 for i in array1 array2 array3 do eval value=\$$i for j in $value do echo -e $value continue 2 done done echo exit 0
運行結果:函數
試驗三(使用函數來實現模擬二維數組):spa
#!/bin/bash # #初始化第一個數組 array2=( element2 element3 element4 ) #初始化第二個數組 array3=( element5 element6 element7 ) #定義一個函數 將所定義的兩個一維數組組合成一個二維數組並顯示到屏幕上 ARRAY() { echo echo ">>Two-dimensional array<<" echo echo "${array2[*]}" echo "${array3[*]}" } # ARRAY echo exit 0
運行結果:blog
實驗四(使用循環來模擬):element
#!/bin/bash # declare -i j=0 declare -i limit=4 # #初始化一個一維數組 array=(34 35 36 37 38 39) # echo "Two-dimensional array" #使用while循環完成對一維數組元素的讀取 並將讀取的元素從新組成一個二維數組後輸出 while [ $j -lt $limit ] do #對數組array中的元素每次都從第$j個元素開始讀取且讀取的數目爲3 echo "${array[*]:$j:3}" let j+=2 let j++ done echo exit 0
運行結果:get