【发布时间】:2018-01-29 08:49:01
【问题描述】:
您好,我正在使用 bash,但在迭代关联二维数组时遇到了困难。
我有这个数组:
declare -A x_matrix
x_matrix[ele1,sub1]="asdfadf"
x_matrix[ele2,sub3]="blabla"
x_matrix[ele1,sub2]="no matters"
x_matrix[ele3,sub1]="opps"
elements=(ele1 ele2 ele3)
我想用类似这样的已知元素进行迭代
for e in ${elements[@]}; do
for sub in ${!x_matrix[$e,@]}; do
echo "($e,$sub)> ${x_matrix[$e,$sub]}"
done
done
而我是这样的:
(ele1,sub1)> asdfadf
(ele1,sub2)> no matters
(ele2,sub3)> blabla
(ele3,sub1)> opps
我不知道如何做到这一点,但我相信它应该是可能的。
[编辑] 我检查了这个:BASH: need some help with multidimensional associative arrays 提供的解决方案不符合我的需要。
【问题讨论】:
-
引用手册页:“Bash 提供一维索引和关联数组变量。”。是否可以用 ele1、ele2 和 ele3 的 3 个不同数组替换二维数组?
-
您确定要为此目的使用 bash 吗?还有其他脚本语言/编程语言更适合这种数据结构
-
Bash 是一个外壳。 Shell 具有编程语言功能,但也有一些限制——您正在尝试做一些 Shell 不是为之设计的事情。您没有使用正确的工具来完成这项工作。以 python 为例。