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

Posted

技术标签:

【中文标题】如何在 Bash 中间接获取关联数组的键和值?【英文标题】:How to get the keys and values of an associative array indirectly in Bash? 【发布时间】:2014-12-03 19:23:40 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

在 Bash 中,要通过间接获取关联数组的键,给定变量 dictvar 中的数组名称,可以利用 declarelocal (original 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 可以将变量名“解析”为实际变量,这项任务更容易完成。

【讨论】:

以上是关于如何在 Bash 中间接获取关联数组的键和值?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取与php数组中的键和值相关的所有数组值

关联数组中的PHP三元语句来设置键和值?

PHP获取数组最后一个元素的键和值

如何从数组中的对象添加新的键和值?

如何将对象数组操作为不同的键和值? [复制]

[译] Groovy 语法之Map