Artigo original: Bash Array – How to Declare an Array of Strings in a Bash Script

Os scripts do Bash fornecem uma maneira conveniente de automatizar tarefas da linha de comando.

Com o Bash, você pode fazer muitas das mesmas coisas que faria em outro processo de script ou em linguagens de programação. Você pode criar e usar variáveis, executar laços, usar lógica condicional e armazenar dados em arrays.

Embora a funcionalidade possa ser muito familiar, a sintaxe do Bash pode ser complicada. Neste artigo, você aprenderá como declarar arrays e depois como utilizá-las em seu código.

Como declarar um array no Bash

Declarar um array no Bash é fácil, mas preste atenção à sintaxe. Se você estiver acostumado a programar em outras linguagens, o código pode parecer familiar, mas há diferenças sutis que são fáceis de deixar passar despercebidas.

Para declarar seu array, siga estes passos:

  1. Dê um nome ao seu array
  2. Depois desse nome de variável, coloque um sinal de igualdade. O sinal de igual não deve ter espaços ao seu redor.
  3. Coloque o array entre parênteses (não entre colchetes, como em JavaScript)
  4. Digite suas strings usando aspas, mas sem vírgulas entre elas

A sua declaração do array será algo parecido com isto:

meuArray=("gato" "cachorro" "rato" "sapo")

É isso! Simples assim.

Como acessar um array em Bash

Há algumas maneiras diferentes de se percorrer o seu array. Você pode fazer laços para percorrer os elementos ou usando seus índices.

Como percorrer os elementos do array

Para percorrer os elementos do array, seu código precisará ter essa aparência:

for str in ${meuArray[@]}; do
  echo $str
done

Vamos por partes: é um pouco como usar forEach em JavaScript. Para cada string (str) no array (meuArray), imprima a string.

A saída deste laço será:

gato
cachorro
rato
sapo

Observação: o símbolo @ entre colchetes indica que você está passando por todos os elementos do array. Se você o deixasse de fora e apenas escrevesse for str in ${meuArray}, apenas a primeira string no array (gato) seria impressa.

Como percorrer através dos índices do array

Como alternativa, você pode percorrer os índices do array. É como um laço for em JavaScript. É útil para quando você quiser acessar o índice de cada elemento.

Para usar este método, seu código deverá ter esta aparência:

for i in ${!meuArray[@]}; do
  echo "O elemento $i é ${meuArray[$i]}"
done

A saída será assim:

O elemento 0 é gato
O elemento 1 é cachorro
O elemento 2 é rato
O elemento 3 é sapo

Observação: o ponto de exclamação no início da variável meuArray indica que você está acessando os índices do array, não os elementos em si. Isto pode ser confuso se você estiver acostumado com o ponto de exclamação indicando negação. Portanto, preste atenção a isso.

Outra observação: o Bash, tipicamente, não requer chaves para as variáveis, mas para os arrays, sim. Portanto, você notará que, quando você faz referência a um array, o faz com a sintaxe ${meuArray}, mas quando você faz referência a uma string ou a um número, você simplesmente usa um sinal de dólar: $i.

Conclusão

Scripts do Bash são úteis para criar um comportamento automatizado da linha de comando. Os arrays, por outro lado, são uma ótima ferramenta, que você pode usar para armazenar dados diversos.

Declará-los e usá-los não é difícil, mas é diferente de outras linguagens. Portanto, preste muita atenção para evitar cometer erros.