如何使用动态变量名追加到数组?

如何使用动态变量名追加到数组?
section_example=(one two three)
name=example; section_$name+=(four)

bash: syntax error near unexpected token `four'

部分名称事先未知。evaldeclare -a输出相同的错误。我看到的唯一方法是声明一个包含节名称和值的关联数组。

答案1

eval如果使用双引号,ed 命令会失败吗?喜欢

name=example; eval "section_$name+=(six)"
echo "${section_example[@]}"
one two three four five six

最近的bashes 提供了“nameref”变量。man bash:

可以使用声明或本地内置命令的 -n 选项(请参阅下面的声明和本地的描述)为变量分配 nameref 属性,以创建 nameref 或对另一个变量的引用。这允许间接操纵变量......

尝试

> declare -n NamRef=section_$name
> NamRef+=(four)
> echo "${NamRef[@]}"
one two three four
> echo "${section_example[@]}"
one two three four

相关内容