【问题标题】:How to assign a value to dynamic associative array in Bash?如何为 Bash 中的动态关联数组赋值?
【发布时间】:2018-07-16 22:23:10
【问题描述】:

假设我们有这样的 Bash 4 脚本:

1: arr='my_array';
2: declare -A "${arr}";
3: my_array[foo]='This is foo';
4: arrfoo="${arr}[foo]";
5: echo "${!arr}";

输出是:

This is foo

但请注意,数组 my_array 是动态声明的(第 2 行),我已经使用它的直接名称(第 3 行)分配了值(在索引 foo 下)。

我找不到通过动态名称为关联数组赋值的语法(在这种情况下,我的意思是通过${arr} 变量)。这可能吗,因为您可以动态声明数组?构造如下:

declare -A "${arr}"=(
    [foo]='This is foo'
);

只是不工作。

【问题讨论】:

    标签: arrays bash


    【解决方案1】:

    您可以单独使用declare

    $ arr=my_array
    $ declare -A "$arr"
    $ declare "$arr[foo]=bar"
    $ echo "${my_array[foo]}"
    bar
    

    这提供了您需要的间接性。参数$arr[foo]=bar 扩展为my_array[foo]=bar,这是一个由declare 处理的有效赋值表达式。

    【讨论】:

      猜你喜欢
      • 2012-06-20
      • 1970-01-01
      • 1970-01-01
      • 2010-10-02
      • 2017-02-26
      • 1970-01-01
      • 2017-07-07
      • 2016-11-21
      • 1970-01-01
      相关资源
      最近更新 更多