如何在Bash中间接获取关联数组的键和值?

时间:2014-10-09 00:49:59

标签: arrays bash associative-array indirection

在Bash中,只给出一个包含关联数组名称的变量

$ declare -A dict=([abc]=125 [def]=456)
$ dictvar="dict"

我们如何检索关联数组的键和值?

1 个答案:

答案 0 :(得分:3)

在Bash中,为了通过间接获取关联数组的键,给定变量dictvar中数组的名称,可以使用declarelocaloriginal source) :

$ declare -a 'keys=("${!'"$dictvar"'[@]}")' # or 'local'

然后,获取值

$ for key in ${keys[@]}; do
$     value_var="${dictvar}[$key]"
$     echo "$key = ${!value_var}"
$ done

this answer中建议使用eval替代方案。

根据this answer,在Bash 4.3+中,由于新的declare -n可以将变量名称“解析”为实际变量,因此该任务更容易实现。