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