Como Usar Bash Arrays

Como Usar Bash Arrays

O Bash é a escolha ideal para a automação para usuários Linux. Como a automação muitas vezes lida com milhares de elementos, é fundamental saber o que é bash array.

O gerenciamento de VPS ou servidores físicos fica muito mais fácil com os bash arrays. Neste tutorial, vamos apresentar os diferentes tipos de bash arrays e exemplos práticos.

Um bash array é uma estrutura de dados desenvolvida para armazenar informação de forma indexada. Em outras palavras, um bash array é um grande grupo de variáveis. Diferente dos arrays comuns usados em outras linguagens de programação, os bash arrays podem armazenar diferentes tipos de elementos. Por exemplo, você pode usar um bash array para armazenar strings e números.

Existem dois tipos de bash arrays:

  • Indexado: o array é indicado por números inteiros ou números naturais.
  • Associativo: o array é indicado por strings ou um conjunto de caracteres e palavras.

Lembre-se que o bash não suporta array multidimensionais, portanto não é possível adicionar um array dentro de outro array.

Como Declarar Array no Bash

Existem algumas formas de declarar arrays indexados e associativos no bash. Vale a pena notar que o tamanho dos bash arrays não precisa ser declarado antecipadamente, pois eles não têm limite máximo para o número de elementos que podem armazenar.

Array Indexado

Vamos começar com um array indexado de bash simples. Por exemplo, usaremos ele para criar uma lista de diferentes meios de transporte.

A primeira opção é declarar um array usando o comando interno do shell declare com a flag -a e designar os elementos do array:

declare -a IndexedArray
IndexedArray[0]=car
IndexedArray[1]=plane
IndexedArray[2]=bike

O mesmo resultado pode ser alcançado sem o comando interno declare:

IndexedArray[0]=car
IndexedArray[1]=plane
IndexedArray[2]=bike

Ou podemos deixar ainda mais simples usando:

IndexedArray=(car plane bike)

Lembre-se que a indexação começa em 0, então o exemplo acima irá atribuir o elemento car do array para o índice 0.

No entanto, há uma opção para definir um array com índices:

IndexedArray=([0]=’car’ [1]=’plane’ [2]=’bike’)

Uma característica interessante dos bash arrays é que não é necessário seguir os números dos índices na ordem. Por exemplo, você pode declarar apenas o primeiro e o terceiro elementos e deixar o segundo elemento de um array vazio:

IndexedArray[0]=car
IndexedArray[2]=bike

Array Associativo

Embora os arrays indexados não exijam o comando interno declare, um bash array associativo não poderá ser criado sem antes ser declarado:

declare -A AssociativeArray

Em seguida, adicionamos os valores. Lembrando que a chave deve ser uma string:

AssociativeArray[color]=blue
AssociativeArray[type]=car
AssociativeArray[topspeed]=200

Uma forma alternativa seria:

declare -A AssociativeArray=( [color]=blue [type]=car [topspeed]=200 )

Como Adicionar uma Variável a um Bash Array

As variáveis de bash podem ser facilmente adicionadas usando o operador +=. Por exemplo, o processo para um array indexado ficaria assim:

IndexedArray=(car plane bike)
IndexedArray=(car plane bike)

O array indexado agora tem um novo elemento. Lembre-se que esse método se anexa ao final de um array. Portanto, o elemento motorcycle será adicionado como último elemento.

Para arrays associativos, o processo é bem parecido. A diferença é que é preciso especificar as chaves com todos os elementos.

declare -A AssociativeArray
AssociativeArray[color]=blue
AssociativeArray+=([tires]=alloy [engine]=gasoline)

Como Referenciar e Imprimir um Elemento Array

Os usuários podem referenciar os valores dos bash arrays usando o índice ou a chave do elemento. Para isso, basta criar um array indexado:

IndexedArray=(car plane bike)

Para referenciar a primeira variável de array, utilize a sintaxe abaixo:

${IndexedArray[0]}

Combine a sintaxe com echo e você terá o seguinte resultado:

echo ${IndexedArray[0]}

A saída (output) te mostrará o primeiro elemento. Neste caso, o primeiro elemento é car. A mesma lógica se aplica ao referenciar e imprimir um array associativo:

declare -A AssociativeArray=( [color]=blue [type]=car [topspeed]=200 )
echo ${AssociativeArray[type]}

A saída também será car.

Para imprimir todo o array, usamos @ como um índice. O script completo fica assim:

Script de bash para criar e imprimir um array indexado.

Você também pode imprimir apenas as chaves de um array. Para isso, basta adicionar um ponto de exclamação antes do nome do array:

Script de linha de comando para imprimir todas as chaves de um array associativo. Para imprimir todos os valores, somente o ponto de exclamação precisa ser removido.

Como Remover os Elementos de Bash Arrays

O processo de apagar os elementos de array é parecido com o de referenciá-los. Usamos um indicador ou uma chave combinada com o comando interno unset para remover um elemento de array.

Veja abaixo um exemplo de remoção de um único elemento do array indexado:

Script de bash para mostrar o comando unset que é usado para apagar elementos de um array

Uma lógica parecida se aplica aos arrays associativos:

Script de bash Bash exibindo o comando unset para arrays associativos, usado para remover um elemento de um array

Para apagar um array inteiro, especifique unset com o nome do array, como mostramos a seguir:

Script de shell para apagar o array por completo.

Nada é exibido após tentarmos imprimir os elementos de array porque o comando unset os apagou.

Como Percorrer um Array

Criar loops de bash é um aspecto fundamental para aprender o básico dos comandos bash. Você também pode usar loops com arrays. Por exemplo, o caso de uso mais comum é a iteração sobre cada item do array:

Script de shell com o comando for loop para iterar e imprimir um array

Você também pode combinar chaves com elementos de array e imprimi-los juntos, como no exemplo abaixo:

Script de linha de comando para imprimir elementos e chaves para um arrau associativo.

Como Passar um Array para uma Função

As funções poupam um tempo considerável na elaboração de scripts. Em vez de escrevermos o mesmo código várias vezes, podemos chamar uma função que já foi escrita. Vamos combinar o loop de iteração mencionado anteriormente e criaremos uma função a partir dele:

function Iteration
{
m=${#IndexedArray[@]}
for (( i=0; i<m; i++ ))
do
echo ${IndexedArray[$i]}
done
}
IndexedArray=(car bike plane)
Iteration ${IndexedArray[@]}

Ao executá-lo em uma linha de comando, você terá o seguinte resultado:

Função bash para iteração de array

Conclusão

Como vimos, o bash é um dos shells e das linguagens de comando mais populares para servidores virtuais e físicos baseados em Linux.  Os comandos bash e os arrays permitem que seus usuários automatizem seu trabalho e deixem de passar horas a fio realizando tarefas manuais.

Neste tutorial, apresentamos a maioria das operações de array, como:

  • Declarar e criar arrays indexados e associativos.
  • Adicionar e remover variáveis dos arrays.
  • Referenciar e imprimir arrays.
  • Percorrer os arrays e passá-los para funções.

Nós também apresentamos alguns exemplos que podem ser usados quando você quiser explorar o bash. Caso tenha dúvidas ou comentários, sinta-se à vontade de deixá-los na seção abaixo.

Perguntas Frequentes sobre Bash Arrays

Bash Arrays vs. String

Um bash array armazena um conjunto de elementos, como por exemplo um conjunto de números com uma lista de palavras. Já uma string pode ser considerada um array, mas ela só pode armazenar caracteres, nada mais.

Bash Arrays vs. Lista

Uma lista de bash é uma sequência de um ou mais pipelines separados por um dos operadores. Dessa forma, as listas não estão relacionadas aos arrays. Porém, os arrays indexados às vezes são referidos como listas.

O Que Significa {} em Bash?

As chaves sem um símbolo $ são consideradas expansões de brace e são usadas para criar strings arbitrárias. Você pode usar as chaves para criar arrays. Por exemplo, o echo {0..100} vai imprimir números do zero ao 100.

Bash é uma Linguagem?

Sim, o bash é uma linguagem de comando. Ele é usado para automatizar tarefas ou executar comandos na linha de comando. Comparado à maioria das linguagens de programação, a linguagem de comando bash é mais fácil de aprender e a sintaxe dela é relativamente simples.  

Como Usar o Comando Echo em Bash Arrays?

Para usar o comando echo em um array, basta usar o formato echo ${Array[0]}. Onde Array é o nome do seu array, e 0 é o índice ou a chave, caso esteja usando o comando em um array associativo. Você também pode usar os símbolos @ ou * em vez de um índice para imprimir o array inteiro.

Author
O autor

Bruna Vidanya

Bruna Vidanya é tradutora na Hostinger Brasil. É graduada em Letras Tradução Inglês pela Universidade de Brasília e já foi estagiária tradutora no Senado Federal. Teve a sua primeira tradução – um livro infanto-juvenil – publicada pela Livraria Senado Federal. É apaixonada por tecnologia e agora demonstra essa paixão, com muito carinho, escrevendo e traduzindo artigos para a Hostinger. Nas horas vagas, Vidanya ama ficar com os seus três cachorrinhos: Madonna, Snoop e Scooby-Doo, além de ver séries (as sitcoms são as suas favoritas). Um fato curioso sobre a autora: seu primeiro bichinho de estimação foi um galo Garnisé, chamado Chico Liro.