通过具有相同键的关联数组循环

时间:2015-05-09 14:41:40

标签: linux bash shell unix associative-array

我目前正在尝试循环关联数组。此数组包含具有相同键的值。但是,当我试图遍历它时,我只得到一组结果。如何遍历包含相同键的所有值?

#!/bin/bash/
declare -A details=( [dog]="golden retriver" [cat]="bengal" [bird]="eagle" [dog]="bulldog" [cat]="sphynx" [bird]="parakeet" )

for k in "${!details[@]}"
do
  echo $k --- ${details[$k]}
done

结果:

cat --- sphynx
dog --- bulldog
bird --- parakeet

1 个答案:

答案 0 :(得分:3)

在bash中不存在与关联数组的相同键相关联的多个值。最后一个简单地覆盖了前一个。这就是你无法检索它的原因。为了证明这一点,你可以打印数组的大小,看看它是3而不是6:

mureinik@computer ~ $ declare -A details=( [dog]="golden retriver" [cat]="bengal" [bird]="eagle" [dog]="bulldog" [cat]="sphynx" [bird]="parakeet" )
mureinik@computer ~ $ echo ${#details[@]} 
3