我在bash腳本中有一個二維數組,我想知道每個維度的長度。bash中多維數組的長度
for example :
array[1,1] = 1 array[1,2] = 1
array[2,1] = 1 array[2,2] = 1
array[3,1] = 1 array[3,2] = 1
array[4,1] = 1 array[4,2] = 1
the number of rows : 4
主要腳本:
所有評論都讚賞
我在bash腳本中有一個二維數組,我想知道每個維度的長度。bash中多維數組的長度
for example :
array[1,1] = 1 array[1,2] = 1
array[2,1] = 1 array[2,2] = 1
array[3,1] = 1 array[3,2] = 1
array[4,1] = 1 array[4,2] = 1
the number of rows : 4
主要腳本:
所有評論都讚賞
擊不支持多維數組。方括號中的列表被沿着逗號運算符的C規則來評估,即,其返回最後一個元件:
matrix[0,1]=a
echo ${matrix[0]} # nothing
echo ${matrix[1]} # a
使用數字索引陣列,@choroba是完全正確的: 的方括號的內容是算術評估。
$ for i in $(seq 5); do for j in $(seq 6); do arr[$i,$j]="$i$j"; done; done
$ declare -p arr
declare -a arr='([1]="51" [2]="52" [3]="53" [4]="54" [5]="55" [6]="56")'
如果您使用關聯數組,你可以僞造多維:
$ unset arr; declare -A arr
$ for i in $(seq 5); do for j in $(seq 6); do arr[$i,$j]="$i$j"; done; done
$ declare -p arr
declare -A arr='([5,1]="51" [3,6]="36" [5,3]="53" [3,5]="35" [5,2]="52" [3,4]="34" [5,5]="55" [3,3]="33" [5,4]="54" [3,2]="32" [3,1]="31" [5,6]="56" [2,6]="26" [2,4]="24" [2,5]="25" [2,2]="22" [2,3]="23" [2,1]="21" [4,1]="41" [4,2]="42" [4,3]="43" [4,4]="44" [4,5]="45" [4,6]="46" [1,5]="15" [1,4]="14" [1,6]="16" [1,1]="11" [1,3]="13" [1,2]="12")'
但它仍然是一個一維數組
$ echo "${#arr[@]}"
30
你要知道一些數組的內容,找到尺寸(假設它是一個正方形「矩陣」)
$ i=1; printf "%s\n" "${!arr[@]}" | grep "^$i,"
1,5
1,4
1,6
1,1
1,3
1,2
$ j=1; printf "%s\n" "${!arr[@]}" | grep ",$j$"
5,1
3,1
2,1
4,1
1,1
你可以告訴你的二維數組是什麼意思? – choroba
類似這個矩陣[$ length,1] = value – Donald
'matrix [$ length,1] = value'賦值給'matrix [1]'。 – choroba