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

Arrays 如何在Bash中间接获取关联数组的键和值?,arrays,bash,associative-array,indirection,Arrays,Bash,Associative Array,Indirection,在Bash中,仅给定包含关联数组名称的变量 $ declare -A dict=([abc]=125 [def]=456) $ dictvar="dict" 如何检索关联数组的键和值?在Bash中,如果给定变量dictvar中数组的名称,则可以利用declare或local()间接获取关联数组的键: 然后,获取值 $ for key in ${keys[@]}; do $ value_var="${dictvar}[$key]" $ echo "$key = ${!value_

在Bash中,仅给定包含关联数组名称的变量

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

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

在Bash中,如果给定变量
dictvar
中数组的名称,则可以利用
declare
local
()间接获取关联数组的键:

然后,获取值

$ for key in ${keys[@]}; do
$     value_var="${dictvar}[$key]"
$     echo "$key = ${!value_var}"
$ done
中建议使用
eval
进行替代

根据,在Bash4.3+中,由于新的
declare-n
可以将变量名“解析”为实际变量,因此此任务更容易完成

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