Zsh:将元素附加到动态命名的关联数组

Zsh: append an element a dynamically-named associative array

我有几个关联数组,

typeset -A first
typeset -A second
# …

并想向其中一个添加元素(例如 [a]=b),但找不到正确的语法。开始于

if something; then
  arr=first
else
  arr=second
fi

$arr[a]+=b # bad
$arr+=([a]=b) # bad

并尝试了引号、大括号、各种下标和参数扩展标志、arr=$first/arr=$second 等多种组合。我尝试的一切都是错误的。可以吗?

我不认为这是理想的,但它应该完成工作。

export "${arr}[a]"=b

这在很多情况下也应该有效:

eval "${arr}[a]=b"

eval 名声不好(通常是当之无愧的),但是像这里使用的那些简单的替换,应该没问题。