2

次のように、bash で連想配列を作成しようとしています。

#! /bin/bash

declare -a arr
while read key
do
    arr+=([$key]=1)
done < /dev/stdin

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

「leopard」と「longtuan」をキーとして入力しました。出力は次のようになるはずです。

key:leopard,value:1
key:longtuan,value:1

しかし、私は得た:

key:0,value:11

どうすればこの問題を解決できますか、助けてくれてありがとう。

4

2 に答える 2

3

連想配列ではなく、通常の配列を作成しています。これを変える:

declare -a arr

これに:

declare -A arr

そして問題は消えます。

于 2013-05-16T11:51:27.137 に答える
2

連想配列は、大文字の A で宣言されます。

declare -A arr

declare -a通常の配列を宣言します。

于 2013-05-16T11:51:21.027 に答える