2015-05-09 136 views
2

我目前正試圖循環訪問一個關聯數組。該數組包含具有相同鍵的值。但是,當我試圖循環使用它時,我只能得到一組結果。我如何遍歷包含相同鍵的所有值?使用相同的鍵循環遍歷一個關聯數組

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

回答

3

有作爲具有與在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

相關問題