Você pode obter as duas chaves e valores de uma só vez com esta expansão de parâmetro nifty:
for key val in ${(kv)assoc_array}; do
echo "$key -> $val"
done
Veja Sinalizadores de Expansão de Parâmetro no manual do Zsh.
No zsh, quero iterar em um array associativo. Eu preciso de chaves e valores. Mas quando eu faço iterações sobre o array associativo normalmente ( for x in $assoc_array
), eu só obtenho valores.
Todos os exemplos que eu vi mostram que, dada uma chave , você pode obter o seu valor a partir de um array associativo. Meu problema é pegar o conjunto de chaves para começar.
O zsh suporta a iteração de chaves em um array associativo?
Você pode obter as duas chaves e valores de uma só vez com esta expansão de parâmetro nifty:
for key val in ${(kv)assoc_array}; do
echo "$key -> $val"
done
Veja Sinalizadores de Expansão de Parâmetro no manual do Zsh.
Eu continuei pesquisando depois de fazer a minha pergunta e encontrei esta resposta no Unix StackExchange:
typeset -A assoc_array
assoc_array=(k1 v1 k2 v2 k3 v3)
for k in "${(@k)assoc_array}"; do
echo "$k -> $assoc_array[$k]"
done
A saída é:
k1 -> v1
k2 -> v2
k3 -> v3
Tags zsh