使用相同的键循环遍历一个关联数组

问题描述:

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

#!/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 
+0

要查看完整的关联数组:'声明-p details' – Cyrus

有作为具有与在bash关联阵列的相同键相关联的多个值没有这样的事情。最后一个简单地覆盖了前一个。这就是为什么你不能检索它。为了证明这一点,你可以打印出数组的大小,看看它的3而不是6:

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

任何方式来完成一个解决方法吗? –

+0

使用不同的键。如果你真的需要与每个键相关的多个值,那么“bash”是该作业的错误语言。 – chepner

+0

@Code_Ed_Student,你可以实现,如果不是以字符串的形式让它们成为一个数组 - 你可以为它添加任何新的值,以获得相同的密钥。 – boardrider