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

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

Re: Comparar retorno de comando com conteúdo numérico de arquivo


From: nerobarrabas
Subject: Re: Comparar retorno de comando com conteúdo numérico de arquivo
Date: Wed, 07 Nov 2012 23:19:22 -0000
User-agent: eGroups-EW/0.82

Grande André!
Show de bola.
Funcionou "quase" perfeito.
Só esses dois detalhes:
- Caso o retorno do arquivo B seja menor que o do arquivo A, tem que retornar 
OK. O script está retornando NÃO OK (no caso do Alarm notification)
- As strings tem que retornar numa linha só, assim:
NOT OK - Changes to lock:90, Lost of signal:30

Eu vou tentar mexer aqui, mas se puder dar uma sugestão, por favor.
De qualquer forma, já resolveu meu problema.

Grato.

Diramos

--- Em address@hidden, André Saunite <saunite@...> escreveu
>
> Opa...
> 
> Eu tenho certeza que tem jeito melhor, e dependendo das strings que você 
> tem (se tiver número no nome ou o caracter "|"), vai dar errado, mas 
> aqui vai:
> 
> $ cat a
> Changes to lock 10
> Lost of signal 500
> Alarm notification 30
> CRC4 error 0
> 
> $ cat b
> Changes to lock 100
> Lost of signal 530
> Alarm notification 20
> CRC4 error 0
> 
> $ ./doit.sh a a
> OK
> 
> $ ./doit.sh a b
> NOT OK
> Changes to lock: -90
> Lost of signal: -30
> Alarm notification: 10
> 
> $ cat doit.sh
> #!/bin/bash
> FILE1=$1
> FILE2=$2
> sdiff $FILE1 $FILE2 > /dev/null 2> /dev/null
> RESULT="$?";
> if [ $RESULT -eq 0 ] ; then
>      echo "OK";
>      exit 0;
> else
>      echo "NOT OK";
> fi
> IFS=$'\n' ; for i in `sdiff $FILE1 $FILE2 | grep \| `; do
>      LINE="`echo $i | sed -e 's/\s*|\s*/-/' -e 's/[A-Za-z ]//g' | bc `";
>      NAME="`echo $i | sed -e 's/ [0-9].*//g'`";
>      echo "$NAME: $LINE";
> done
> 
> Abraços!
> André Saunite
> 
> On 11/07/2012 03:56 PM, nerobarrabas wrote:
> >
> > Mestres,
> > Eu já procurei bastante e não consegui resolver o problema abaixo.
> > Tenho o seguinte retorno de comando (o qual já tratei):
> >
> > Changes to lock 10
> > Lost of signal 500
> > Alarm notification 30
> > CRC4 error 0
> > .
> > .
> > .
> > Esse retorno eu gravo num arquivo.
> > Em seguida, dou o comando de novo e me retorna, por exemplo:
> >
> > Changes to lock 100
> > Lost of signal 530
> > Alarm notification 20
> > CRC4 error 0
> > .
> > .
> > .
> > Notem que os valores da última coluna da 1ª e a 2ª linhas sofreram 
> > acréscimo, o da 3ª sofreu decréscimo e o da 4ª permaneceu o mesmo.
> > O que eu preciso:
> >
> > - Comparar um a um os valores do retorno do comando com os do arquivo.
> > - Caso os do retorno sejam iguais ou menores que os do arquivo, 
> > simplesmente substituir o conteúdo do arquivo com os novos valores e 
> > retornar um OK.
> > - Caso sejam maiores, retornar um NÃO OK e a seguinte string (do 
> > exemplo acima). com a diferença entre os valores atuais e os antigos:
> >
> > Erros encontrados: Changes to lock=90, Lost of signal=30
> >
> > - E substituir os novos valores no arquivo.
> > Notem que o arquivo tem mais linhas, mas sempre com quantidade de 
> > linhas e strings fixas, alterando só os valores numéricos.
> >
> > Poderiam dar uma luz?
> >
> > Grato desde já.
> >
> > Diramos
> >
> > 
> 
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>



reply via email to

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