在 Bash(4 或更高版本)中,如果我有一个关联数组dict
,我可以像这样设置它的值dict[apple count]=1
,并且我可以使用${dict[apple count]}
. Zsh 允许键名称中存在空格吗?dict[apple count]=1
在 Zsh 中不起作用,所以我猜 Zsh 有不同的语法。dict["apple count"]=1
没有做我想做的事;它不是使用apple count
作为键,而是使用"apple count"
引号作为键的一部分。
答案1
Zsh 允许任意字符串作为键。问题出在解析器上。
要设置任意键,可以使用变量。
typeset -A dict
key='apple count'; dict[$key]=1
key=']'; dict[$key]=2
key=''; dict[$key]=3
printf %s\\n "${(k@)dict}"
答案2
一种(丑陋的)解决方法是使用语法“将元素附加到普通数组”,例如
dict+=('apple count' 1)
Zsh 将维护关联数组的属性(只要您将其声明为一个),因此如果dict['apple count']
存在,它将更新该值。自 Zsh 5.5 以来,一种不太丑陋的方法是:
dict+=(['apple count']=1 ['orange count']=3)