|
From: | Julio C. Neves |
Subject: | Re: [Bulk] Re: [Bulk] Re: [shell-script] atualizar valor de variável |
Date: | Tue, 9 Dec 2014 10:05:55 -0200 |
Como já vimos, no Bash, para atribuirmos valores a um vetor, basta fazer a atribuição colocando os valores entre parênteses:
Praias=(Copacabana Ipanema Leblon)
Vamos ver o que isso gerou:
for ((i=0; i<=5; i++))
do
printf "%d%20s\n" $i "${Praias[i]}"
done
0 Copacabana
1 Ipanema
2 Leblon
3
4
5
Gostaria de incluir outras praias, aí eu tento fazer:
Praias=([3]="Arraial do Cabo" [4]="Buzios" [5]="Cabo Frio")
Vamos aproveitar o for anterior e ver como ficou:
for ((i=0; i<=5; i++))
do
printf "%d%20s\n" $i "${Praias[i]}"
done
0
1
2
3 Arraial do Cabo
4 Buzios
5 Cabo Frio
Epa, dessa forma, escrevi por cima, isto é, substituí o conteúdo existente por um novo valor. Vamos restaurar os valores iniciais das praias:
Praias=(Copacabana Ipanema Leblon)
Para anexar outros valores a esse vetor, temos de trocar atribuição pelo modelo de pré incrementação típico da aritmética no Shell (+=), veja:
Praias+=("Arraial do Cabo" Buzios "Cabo Frio")
Mais uma vez aproveitando o for anterior, vem:
for ((i=0; i<=5; i++))
do
printf "%d%20s\n" $i "${Praias[i]}"
done
0 Copacabana
1 Ipanema
2 Leblon
3 Arraial do Cabo
4 Buzios
5 Cabo Frio
Quando trabalhamos com vetores, outro caso interessante de ser analisado é o seguinte:
$ echo ${Praias[-1]}
Cabo Frio
$ echo ${Praias[-2]}
Buzios
Deve ter dado para notar que índices negativos são relativos ao fim do vetor assim ${Praias[-1]} aponta para o último elemento do vetor e ${Praias[-2]} para o penúltimo.
Agradeço a explicação Julio,Entendi o exemplo perfeitamente, mas de igual maneira pretendo fazer seu curso, afinal o conhecimento não pesa. Quandovocê vir à Porto Alegre e região metropolitana peço que me avise porque ficaria muito feliz e fazê-lo presencial. Tambémpretendo comprar o seu livro, mas isso ainda vai demorar um pouco.Mais uma vez obrigado!2014-12-08 12:08 GMT-02:00 Herbert Parentes Fortes Neto (hpfn) address@hidden [shell-script] <address@hidden>:On Mon, 8 Dec 2014 11:25:55 -0200
"'Julio C. Neves' address@hidden [shell-script]" <address@hidden> wrote:
> Epa eu pensei que seu while estivesse rodando em um sub shell e qdo saísse
> do loop as variáveis estariam perdidas, mas pelo que vc mostrou, não existe
> sub shell.
>
> Agora quem não está entendendo sou eu, já que as suas variáveis não serão
> perdidas e estarão visíveis ao longo de todo o script.
>
é apenas uma questão cosmética. queria assim:
GREP_LINES=$(grep -a "ACESSO SSH" /var/log/kern.log)
while true
do
while true
do
# tirar isso daqui
#GREP_LINES=$(grep -a "ACESSO SSH" /var/log/kern.log | tail -n1)
ip=$(eval $FILTER_IP <<< "$GREP_LINES_atualizada_magicamente")
mas desse jeito o valor de GREP_LINES é sempre o mesmo. vou testar usando
uma função simples.
--
Herbert Parentes Fortes Neto (hpfn)
[Prev in Thread] | Current Thread | [Next in Thread] |