3

これにより、連想配列全体がコンソールに出力されます。

#!/bin/sh

declare -a array=([key1]='value1' [key2]='value2')

for key in ${!array[@]}; do
    echo "Key = $key"
    echo "Value = ${array[$key]}"
done

echo ${array[key1]}
echo ${array[key2]}

代わりに、最後の変数のみを出力します。

[mles@sagnix etl-i_test]$ ./test.sh 
Key = 0
Value = value2
value2
value2

私のせいはどこですか?

@htor : Bash バージョンは 3.2.25(1) リリースです。

4

2 に答える 2

6

連想配列は、Bash 4 以降のバージョンでサポートされています。オプションで宣言された配列は-a、キーではなく整数でインデックス付けできる単なる通常の配列です。この宣言により、要素が 1 つの配列が生成されますvalue2。isfor key in ${!array[@]}の値でキーを反復処理すると、最初の要素が得られます。$key0

を使用して配列を宣言しようとしたときに表示されるエラー出力を考える-Aと、Bash のバージョンが 4 よりも古いと仮定します。変数を調べます$BASH_VERSION

配列の詳しい説明については、http://mywiki.wooledge.org/BashGuide/Arraysを参照してください。

于 2013-05-22T13:08:23.277 に答える
3
#!/bin/bash

declare -A array=([key1]='value1' [key2]='value2')

for key in ${!array[@]}; do
    echo "array[$key] = ${array[$key]}"
done

echo ${array[key1]}
echo ${array[key2]}
于 2013-05-22T09:56:32.027 に答える