zsh
tem substituição de parâmetro diferente do Bash, que está documentado em man zshexpn
. Ele suporta uma variedade de modificadores para o comportamento de expansão , que são colocados entre parênteses antes o nome da variável: ${(X)name}
. O modificador para incluir chaves de matriz (incluindo matrizes associativas) é k
: ${(k)array}
expande para a lista de chaves na matriz, exceto que se uma chave for a cadeia vazia, ela será omitida. Use aspas duplas e o modificador @
para manter a chave vazia.
for x in "${(@k)array}" ; ...
fará um loop pelas chaves da matriz array
.