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

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

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

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

【问题讨论】:

    标签: arrays bash associative-array indirection


    【解决方案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 可以将变量名“解析”为实际变量,这项任务更容易完成。

    【讨论】:

      猜你喜欢
      • 2011-04-25
      • 1970-01-01
      • 2015-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-11
      • 1970-01-01
      相关资源
      最近更新 更多