動的変数名を使用して配列に追加するには?

動的変数名を使用して配列に追加するには?
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

最近の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

おすすめ記事