shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] atualizar valor de variável


From: Julio C. Neves
Subject: Re: [shell-script] atualizar valor de variável
Date: Mon, 8 Dec 2014 09:51:51 -0200

Fala Herbert,
já vi alguns comentários na lista sobre esse pedaço de pg que vc postou e todos me parecem ter razão, isto é, alguém disse que o loop pode ser substituído por um tail (-F|-f|--follow) e aparentemente pode (e deve) mesmo;
Alguém disse que o teu while era desnecessário e pelo trecho de prg que vc postou parece ser mesmo.

Mas supondo que vc saiba o que está fazendo e essa construção seja mesmo necessária vc poderia fazer declarando esse while dentro de uma função que ficaria mais ou menos assim:

declare -f PegaGrep
function PegaGrep
while true
do
    grep texto /var/log/kern.log
    ip=$(echo "$grep_lines" | tail -n1 | sed_repetido)
    hora=$(echo "$grep_lines" | tail -n1 | sed_repetido)
    {
        echo $ip
        echo $hora
    } > /dev/tty
[...]

grep_lines=$(PegaGrep)

repare que a saída de sua função seria somente o grep, já que o ip e a hora estão sendo explicitamente desviados para o /dev/tty e como o prg diz que a saída de PegaGrep ira para a variável $grep_lines, seus problemas acabaram.

Mais uma vez insisto: a lógica que vc usou provavelmente não é a melhor, mas espero que esse macete sirva para muitos colegas de lista.

Abcs,
Julio
@juliobash
P
róximos cursos de Shell
Cidade         Local Período
Rio de Janeiro EDX 09 a 13/03/15
Dou treinamento de Shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.


Em 7 de dezembro de 2014 14:22, Herbert Parentes Fortes Neto (hpfn) address@hidden [shell-script] <address@hidden> escreveu:
 

olá,

vou ser breve para tentar ser claro. se necessário posto o script.

tenho uma variável (grep_lines) que precisa ter seu valor atualizado
a cada volta do loop. mas para tentar organizar melhor o script
gostaria de colocar a declaração dela fora dele. isso também me
economiza digitação e seus erros.

então tenho algo similar a isso:

while True
do
grep_lines=$(grep texto /var/log/kern.log)
ip=$(echo "$grep_lines" | tail -n1 | sed_repetido)
hora=$(echo "$grep_lines" | tail -n1 | sed_repetido)
[...]

o sed_repetido consegui resolver. mas gostaria de tirar a '$grep_lines'
do loop. tem um jeito automágico de atualizar/executar o valor de
uma váriavel sem ser atribuindo um novo valor para ela ? gostaria de
ser algo como:

grep_lines=$(grep texto /var/log/kern.log)
while True
do
ip=$( jeito_magico_atualizar_grep_lines | tail -n1 | sed_repetido)
reg_in=$( jeito_magico_atualizar_grep_lines | tail -n1 | sed_repetido)
[...]

é possível ?

espero ter sido claro.

abraços,
--
Herbert Parentes Fortes Neto (hpfn)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]