Pular para o conteúdo

Trabalhar com array no Bash

Pretendo deixar mais claro aqui como trabalhar com arrays no bash. Espero que após ler esse artigo não restem dúvidas tais como: Quando devo usar? Por que devo usar? Quando não usar? Quais são as possíveis formas de se declarar um array? Posso trabalhar com índices alfanuméricos?
Denis Doria thuck
Hits: 73.060 Categoria: Shell Script Subcategoria: Introdução
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Parte 5: Posso trabalhar com índices alfanuméricos?

Em certas linguagens é possível usar valores alfanuméricos como índices em um array, em shell isso não é possível, apenas números inteiros são aceitos.

Vamos ver o que ocorre quando tentamos usar uma letra como índice:

$ array[a]='valor1'
$ echo ${array[a]}

valor1

Quando olhamos isso realmente parece que funciona, mas não se deixe enganar, isso NÃO está funcionando, vamos analisar com calma para vermos o porque disso estar errado.

$ array[b]='valor2'
$ echo ${array[b]}

valor2

Novamente parece que funciona, mas NÃO está funcionando, vamos olhar novamente o índice 'a':

$ echo ${array[a]}
valor2

Viu, esperávamos que viesse o 'valor1'; porém o que apareceu foi o 'valor2'; mas por quê? O bash não deu erro. Vamos a explicação:

Primeiro vamos ver como o array está armazenado:

array=([0]="valor2")

Como pode ser, somente há o valor '0', não há nem 'a', muito menos 'b'; para entendermos porque isso ocorreu basta fazer:

$ echo $((a)) 0

O shell sempre converte as letras para o número zero, por isso que tivemos esse problema.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
   1. Introdução
   2. Por que devo usar?
   3. Quais são as possíveis formas de se declarar um array?
   4. Como ler os valores de um array?
   5. Posso trabalhar com índices alfanuméricos?
   6. Dicas

Como trabalhar com funções em bash

Sed - Introdução

Personalize seu shell na entrada de seu logon

Montando, monitorando e gerando logs dos compartilhamento NFS automaticamente

Explorando a entrada de dados com READ em Bash Shell

Recursos avançados do bash que você não aprende na escola

#1 Comentário enviado por roberva em 26/06/2008 - 10:34h
Ótimo artigo! Excelente!
Até que enfim, uma luz de vida inteligente aqui...

Uma contrib. for dummies:

array=(1 2 3 4 5 6 7 8 9 10)
for i in ${array[*]}; do i=$[i-1]; echo ${array[$i]}; done


p.s: workaround = `i=$[i-1]`; kkkkkkkkkkk

Contribuir com comentário

Entre na sua conta para comentar.