Da mesma forma que você precisa conhecer bem a sua caixa de ferramentas no Linux para ser mais produto e eficaz, você também precisa conhecer bem os elementos disponíveis no bash para criar scripts matadores e camelar menos. Array é um destes elementos.

Ao final deste artigo você saberá:

  • O que são arrays e como utilizá-los no bash;
  • Qual a diferença entre variáveis e arrays;
  • Como utilizar arrays em seus scripts;
  • Exemplo prático para o uso de arrays;

Se você ainda não leu meu artigo que fala sobre variáveis, recomendo que o leia antes de continuar, pois pode te ajudar no entendimento sobre arrays.
Arrays são variáveis dimensionais indexadas, ou seja, são variáveis que podem armazenar dados em posições dimensionais indexadas através de números inteiros. Imagine um array como sendo uma tabela com linhas e colunas como no exemplo abaixo:

Tabela array

Desta forma, é possível armazenar e acessar dados em infinitas linhas.Variáveis não são dimensionais e Arrays sim.
Existem arrays multidimensionais ou também conhecidos como matriz, mas infelizmente o bash não suporta este tipo de array.

A declaração ou criação de um array no bash pode ser feito das seguintes maneiras:

Exemplo 1:
$ VALOR=(“Conteúdo0” “Conteúdo1” “Conteúdo2”)
$ echo ${VALOR[1]}
Conteúdo1

$ VALOR[0]=”Conteúdo0”
$ VALOR[1]=”Conteúdo1”
$ echo ${VALOR[1]}
Conteúdo1

# Se o array for listado, vai aparecer declarado assim:
$ set|grep VALOR
VALOR=([0]="Conteúdo0" [1]="Conteúdo1" [2]="Conteúdo2")

Tudo que é possível fazer com variáveis é possível fazer também com arrays, isso significa que a expansão de parâmetros também funciona com arrays:

Exemplo 2:
# substring
$ echo ${VALOR[0]:0:4}
Cont

# Retorna o tamanho do conteúdo da posição 0
$ echo ${#VALOR[0]}
9

# Retorna quantos índices (posições) existem no array
$ echo ${#VALOR[*]}
2
ou
$ echo ${#VALOR[@]}
2

Agora que você sabe que os caracteres “*” e “@” permitem acessar todos os índices do array, se quiser imprimir todos os conteúdos do array, basta:

Exemplo 3:
$ echo ${VALOR[@]}
Conteúdo0 Conteúdo1

Agora podemos também utilizar o FOR para acessar todos os elementos do array em um loop:

Exemplo 4:
$ for ((x=0; x < ${#VALOR[*]}; x++)) ; do echo ${VALOR[$x]} ; done
Conteúdo0
Conteúdo1

Um exemplo prático para o uso de arrays é quando você tem diversos valores para uma mesma variável, ou seja, você deseja utilizar valores diferentes mas usar a mesma variável. Veja o script no exemplo abaixo.

Exemplo 5:
#!/bin/bash

Emails=(sysadm@domain.com rodrigo@domain.com ana@domain.com)
for ((x=0; x < ${#Emails[*]}; x++)) ; do
 echo to:${Emails[$x]} | sendmail
done

No exemplo acima, o FOR vai varrer o array “Emails” e enviar um e-mail para cada endereço de e-mail contido neste array. Perceba que se não fosse o uso do array, você teria que utilizar 3 variáveis, uma para cada endereço de e-mail e ao final, não poderia ser eficaz e fazer um loop para automatizar o processo do envio.

Resumindo: Variáveis não são dimensionais e Arrays sim.

Se você gostou deste artigo, deixe seu comentário logo abaixo.

Até a próxima semana.

Comentários

comentários