Linux Shell中的嵌套HashMaps?

时间:2012-12-03 17:05:03

标签: shell hashmap

我可以在Linux Shell中使用嵌套的关联映射吗?

2 个答案:

答案 0 :(得分:3)

是!

看看man bash

(搜索 associative

但是如果你想将数组分配给数组,你必须为自己声明子对象,而不是你自己的处理程序,而不是将这个处理程序作为字符串分配给上层数组:

declare -A x
declare -A x_foo
x_foo=([a]=1 [b]=3)
x['foo']=x_foo;

所以

echo ${!x[@]}
foo

echo ${x[foo]}
x_foo

eval echo \${${x[foo]}[a]}
1

eval echo \${${x[foo]}[b]}
3

eval echo \${!${x[foo]}[@]}
a b

eval echo \${${x[foo]}[@]}
1 3

答案 1 :(得分:2)

不,bash数组只是一维的。您应该能够构造数组键以伪造多维度。例如,如果您想要JSON对象

x = {'foo': {'a': 1, 'b': 2}, 'bar': {'c': 3, 'd', 4}}
在bash中,您必须执行类似

的操作
declare -A x
x[foo,a]=1
x[foo,b]=2
x[bar,c]=3
x[bar,d]=4

并参考,例如

i=foo
j=b
echo "${x[$i,$j]}"