2012-04-11 86 views
1

出於某種原因,我無法用感嘆號語法來訪問數組鍵:訪問bash的數組鍵(MAC)

declare -a sites 
sites=(["fr"]="frederick" ["an"]="annapolis") 

for i in "${!sites[@]}" 
    do 
    echo "key: $i " 
    done 

這只是呼應的出「鍵:0」

什麼時我在這裏做錯了嗎?

另外,我想添加該值。

所以我們放是:

鍵:FR,值:弗雷德裏克

回答

1

問題是declare -a。根據手冊頁,應該是declare -A

declare [-aAfFgilrtux] [-p] [name[=value] ...] 
    ... 
    -a  Each name is an indexed array variable (see Arrays above). 
    -A  Each name is an associative array variable (see Arrays above). 

試試這個:

declare -A sites 
sites=(["fr"]="frederick" ["an"]="annapolis") 

for i in "${!sites[@]}" 
    do 
    echo "key: $i, value: ${sites[$i]}" 
    done 
+0

這就是我試圖在第一。但如果我運行你發佈的腳本,我得到這個輸出:第3行:declare:-A:無效選項 declare:usage:declare [-afFirtx] [-p] [name [= value] ...] key :0,value:annapolis – jessh 2012-04-11 16:12:16

+0

這可能也有幫助:bash --version GNU bash,版本3.2.48(1) – jessh 2012-04-11 16:23:17

+6

關聯數組需要bash> = 4.0。請參閱http://tiswww.case.edu/php/chet/bash/NEWS。事實上,你的bash 3.2手冊頁沒有提及關聯數組。 ;-) – Mikel 2012-04-11 17:38:59