遍历zsh关联数组中的键(或k / v对)?


23

在zsh中,我想遍历一个关联数组。我需要键和值。但是,当我按常规(for x in $assoc_array)遍历关联数组时,仅得到值。

我看过的所有示例都表明,给定一个key,您可以从关联数组中获取其值。我的问题是开始使用一组键。

zsh是否支持遍历关联数组中的键?


如果您的列表很小,则可以选择以下选项:for i in a,b c_s,d ; do KEY=${i%,*}; VAL=${i#*,}; echo $KEY" XX "$VAL; done
数学

Answers:



30

问完问题后,我继续搜索,并在Unix StackExchange上找到以下答案

typeset -A assoc_array
assoc_array=(k1 v1 k2 v2 k3 v3)

for k in "${(@k)assoc_array}"; do
  echo "$k -> $assoc_array[$k]"
done

输出为:

k1 -> v1
k2 -> v2
k3 -> v3

1
对于任何想要以有用的方式进行测试的人,请尝试使用Builtin $options。(请参阅man zshoptions
mVChr

如果密钥不是像foo,bar这样的递增数字(如arr [foo] = baz),该怎么办?
Timo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.