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

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

Re: [shell-script] comparação numérica


From: MrBiTs
Subject: Re: [shell-script] comparação numérica
Date: Tue, 8 Feb 2005 21:13:49 -0300

> Eu quero testar o arquivo /etc/ntp/drift (às vezes é /etc/ntp.drift)
> normalmente é um número com 3 casa decimais, usando '.' (ponto). Se esse 
> numero estiver maior que +-500 (para cada lado) é melhor apagar antes de 
> iniciar o ntpd.
> Também tem um agravante que nunca vi um arquivo com valor errado 
> (500.000 ou -500.000 supostamente), e não consegui forçar o aparecimento 
> de um.

Sem grandes complicacoes:

$ A=500.175
$ perl -e "if ( '$A' gt 500 ) { print 'Maior que 500\n'; } else { print 'Menor 
que 500\n'; }"
Maior que 500
$

Em "shell puro", poderiamos fazer algo como

A=500.175
A=`echo $A | tr -d "."`

if [ $A -gt 500000 ] ; then

Em awk, algo como

$  cat /etc/ntp.drift | awk '{ print ($1 > 500) ? "true" : "false" }'

As teorias sao:

Comparacoes do tipo -gt, -eq, -lt, -ne esperam valores inteiros
Comparacoes em linguagens como perl e awk compreendem numeros reais.

Somente a titulo de curiosidade

$ A=500.175
$ time perl -e "if ( '$A' gt 500 ) { print 'Maior que 500\n'; } else { print 
'Menor que 500\n'; }"
Maior que 500
real    0m0.006s
user    0m0.000s
sys     0m0.010s

$ time echo 500.175 | awk '{ print ($1 > 500) ? "true" : "false" }'
true
real    0m0.006s
user    0m0.000s
sys     0m0.010s


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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