Bash では、連想配列の名前を含む変数のみを指定すると、
$ declare -A dict=([abc]=125 [def]=456)
$ dictvar="dict"
連想配列のキーと値を取得するにはどうすればよいでしょうか?
Bash では、連想配列の名前を含む変数のみを指定すると、
$ declare -A dict=([abc]=125 [def]=456)
$ dictvar="dict"
連想配列のキーと値を取得するにはどうすればよいでしょうか?
Bashでは、変数内の配列の名前を指定して、間接的に連想配列のキーを取得するには、または(元のソースdictvar
)を利用できます:declare
local
$ 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
では、変数名を実際の変数に「解決」できる新しい機能のおかげで、このタスクははるかに簡単に達成できます。