arrays - 如何在 Bash 中为动态关联数组赋值?

标签 arrays bash

假设我们有这样的 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'
);

只是不工作。

最佳答案

您可以简单地单独使用declare:

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

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

关于arrays - 如何在 Bash 中为动态关联数组赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48650075/

相关文章:

java - 对象数组 - 从数组中删除对象

javascript - 从使用 map 创建的对象中获取最高值

bash - 概括 awk 函数

linux - 获取带问号的行和之前的行 - sed

regex - 使用 sed 查找和替换变量中的特定字符

javascript - 检查字符串是否包含关键字数组

javascript - 序列化 JSON 数组并将其解析为数组

bash - 将文件名读入数组

Bash 绑定(bind)命令

ios - NSPredicate 使用列表中的任何对象搜索数组 |对象C