Fish Shell:
Usando arrays associativos

Como fazer:

Fish não suporta nativamente arrays associativos como o Bash 4+, mas você pode alcançar uma funcionalidade similar usando uma combinação de listas e manipulação de strings. Veja como imitá-los:

Primeiro, configurando elementos de “array associativo” separadamente:

set food_color_apple "red"
set food_color_banana "yellow"

Para acessar um elemento, basta referenciá-lo diretamente:

echo $food_color_apple
# Saída: red

Se você precisar iterar sobre eles, use um loop for considerando uma convenção de nomenclatura:

for food in apple banana
    echo $food_color_$food
end
# Saída:
# red
# yellow

Para aqueles que sentem falta do ${!array[@]} do Bash para obter todas as chaves, você pode armazenar as chaves em uma lista separada:

set food_keys apple banana

for key in $food_keys
    echo $key 'é' $food_color_$key
end
# Saída:
# apple é red
# banana é yellow

Aprofundamento

Verdadeiros arrays associativos, como em outras linguagens de script, ainda não fazem parte da abordagem do Fish. A solução alternativa mostrada aproveita as capacidades de manipulação de strings e listas do Fish para criar uma estrutura pseudo-associativa. Embora funcione, não é tão limpo ou à prova de erros quanto seria o suporte integrado de arrays associativos. Outros shells como Bash e Zsh fornecem funcionalidade de array associativo integrada, o que resulta em um código mais direto e legível. No entanto, a filosofia de design do Fish visa simplicidade e facilidade de uso, possivelmente às custas de tais recursos. A solução alternativa satisfaz a maioria das necessidades, mas fique de olho na evolução do Fish Shell - seus desenvolvedores melhoram ativamente e adicionam recursos baseados no feedback da comunidade.