2

Bash では、連想配列の名前を含む変数のみを指定すると、

$ declare -A dict=([abc]=125 [def]=456)
$ dictvar="dict"

連想配列のキーと値を取得するにはどうすればよいでしょうか?

4

1 に答える 1

3

Bashでは、変数内の配列の名前を指定して、間接的に連想配列のキーを取得するには、または(元のソースdictvar)を利用できます:declarelocal

$ declare -a 'keys=("${!'"$dictvar"'[@]}")' # or 'local'

次に、値を取得するには

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

この回答では、別の使用法evalが提案されています。

この回答によると、Bash 4.3+declare -nでは、変数名を実際の変数に「解決」できる新しい機能のおかげで、このタスクははるかに簡単に達成できます。

于 2014-10-09T00:49:58.557 に答える