![如何使用动态变量名追加到数组?](https://linux22.com/image/206149/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E5%8A%A8%E6%80%81%E5%8F%98%E9%87%8F%E5%90%8D%E8%BF%BD%E5%8A%A0%E5%88%B0%E6%95%B0%E7%BB%84%EF%BC%9F.png)
section_example=(one two three)
name=example; section_$name+=(four)
bash: syntax error near unexpected token `four'
部分名称事先未知。eval
并declare -a
输出相同的错误。我看到的唯一方法是声明一个包含节名称和值的关联数组。
答案1
eval
如果使用双引号,ed 命令会失败吗?喜欢
name=example; eval "section_$name+=(six)"
echo "${section_example[@]}"
one two three four five six
最近的bash
es 提供了“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