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.