我想在 BASH 中编写/制作/使用 [m][n][k] 的 3D 数组。据我了解,BASH 不支持非一维数组。
有什么想法吗?
最佳答案
使用精心设计的关联数组键伪装多维:
declare -A ary
for i in 1 2 3; do
for j in 4 5 6; do
for k in 7 8 9; do
ary["$i,$j,$k"]=$((i*j*k))
done
done
done
for key in "${!ary[@]}"; do printf "%s\t%d\n" "$key" "${ary[$key]}"; done | sort
1,4,7 28
1,4,8 32
1,4,9 36
1,5,7 35
1,5,8 40
1,5,9 45
1,6,7 42
1,6,8 48
1,6,9 54
2,4,7 56
2,4,8 64
2,4,9 72
2,5,7 70
2,5,8 80
2,5,9 90
2,6,7 84
2,6,8 96
2,6,9 108
3,4,7 84
3,4,8 96
3,4,9 108
3,5,7 105
3,5,8 120
3,5,9 135
3,6,7 126
3,6,8 144
3,6,9 162
我使用了 sort
因为 assoc.array 的键没有固有的顺序。
关于arrays - 如何在 BASH 中制作 3D 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26656130/