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.
Conteúdo
O que são Bash Arrays?
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:
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:
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:
Uma lógica parecida se aplica aos arrays associativos:
Para apagar um array inteiro, especifique unset com o nome do array, como mostramos a seguir:
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:
Você também pode combinar chaves com elementos de array e imprimi-los juntos, como no exemplo abaixo:
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:
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.