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