2012-04-11 9 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:宣言:-A:無効なオプション 宣言:使用:宣言[-afFirtx] [-p] [name [=値] ...] :0、value:annapolis – jessh

+0

これも参考になるかもしれません:bash --version GNU bash、バージョン3.2.48(1) – jessh

+6

連想配列にはbash> = 4.0が必要です。 http://tiswww.case.edu/php/chet/bash/NEWSを参照してください。そして、bash 3.2のmanページが連想配列について何も言わないという事実。 ;-) – Mikel

関連する問題