arrays - 如何在 BASH 中制作 3D 数组?

标签 arrays linux bash multidimensional-array

我想在 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/

相关文章:

bash - 并行运行一定数量的命令-对比xargs -P,GNU并行和“moreutils”并行

php - Laravel 5.2 中返回列值

c - 为什么在 Linux 中没有库说明符就不会出错?

linux - 由于 etc/fstab 中的 NOFAIL_OPTION,GCP 无法登录串行端口 root 帐户

linux - 我可以使用正则表达式忽略对 diff 的评论吗?

bash 脚本循环多个变量

javascript - 无需迭代即可将成对数组转换为 2 个单独的数组

Python 字符数组声明

C:转置矩阵,分割错误

linux - 使用 mencoder 在后台录制视频