Bash
如何附加到具有動態變數名的數組?
section_example=(one two three) name=example; section_$name+=(four) bash: syntax error near unexpected token `four'
部分名稱事先是未知的。
eval
並declare -a
輸出相同的錯誤。我看到的唯一方法是聲明一個帶有部分名稱和值的關聯數組。
如果雙引號,
eval
ed 命令會失敗嗎?喜歡name=example; eval "section_$name+=(six)" echo "${section_example[@]}" one two three four five six
最近的
bash
es 提供“nameref”變數。man bash
:可以使用 -n 選項為 declare 或 local 內置命令(請參閱下面的 declare 和 local 的描述)分配 nameref 屬性以創建 nameref 或對另一個變數的引用。這允許間接地操縱變數……
嘗試
> declare -n NamRef=section_$name > NamRef+=(four) > echo "${NamRef[@]}" one two three four > echo "${section_example[@]}" one two three four