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?
Parte 4: Como ler os valores de um array?
A primeira tentativa quando vamos ler um valor de uma variável é fazer:
$ VAR=1
$ echo $VAR
1
Se fizermos isso para um array dará errado:
$ array[0]='valor1'
$ array[1]='valor2'
$ array[2]='valor3'
$ echo $array[1]
valor1[1]
O que deu de errado? Estávamos esperando um resultado bem diferente: 'valor2', era o que queríamos.
Vamos entender melhor o problema para que possamos resolver, veja o que ocorre abaixo:
$ echo $array
valor1
O $array sempre retorna o valor do primeiro elemento, como o shell tem que interpretar os valores, ele não lê até o fim, por isso ocorre esse problema, para que isso não ocorra temos que fazer:
$ echo ${array[1]}
valor2
O uso de {} é uma boa prática, se acostume a utilizá-la não somente com array, mas também com variáveis normais.
$ VAR=1
$ echo $VAR
1
Se fizermos isso para um array dará errado:
$ array[0]='valor1'
$ array[1]='valor2'
$ array[2]='valor3'
$ echo $array[1]
valor1[1]
O que deu de errado? Estávamos esperando um resultado bem diferente: 'valor2', era o que queríamos.
Vamos entender melhor o problema para que possamos resolver, veja o que ocorre abaixo:
$ echo $array
valor1
O $array sempre retorna o valor do primeiro elemento, como o shell tem que interpretar os valores, ele não lê até o fim, por isso ocorre esse problema, para que isso não ocorra temos que fazer:
$ echo ${array[1]}
valor2
O uso de {} é uma boa prática, se acostume a utilizá-la não somente com array, mas também com variáveis normais.
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