Bash で連想配列を反復処理する方法 質問する

Bash で連想配列を反復処理する方法 質問する

Bash スクリプトの連想配列に基づいて、キーと値を取得するために配列を反復処理する必要があります。

#!/bin/bash

declare -A array
array[foo]=bar
array[bar]=foo

実際のところ、for-in ループを使用しながらキーを取得する方法がわかりません。

ベストアンサー1

キーには感嘆符: を使用してアクセスし${!array[@]}値には を使用してアクセスします${array[@]}

次のようにキー/値のペアを反復処理できます。

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

ステートメント内の変数を引用符で囲むことに注意してください(の代わりforに を使用します)。これは、キーにスペースが含まれている場合に必要です。@*

他の回答の混乱は、質問にキーと値の両方に「foo」と「bar」が含まれているという事実から生じています。

おすすめ記事