engos
(usa openSUSE)
Enviado em 18/07/2008 - 08:34h
Bem, vamos lá...
1o - As funcionalidades aritiméticas do shell são básicas, sendo assim qualquer coisa mais avançada você precisa usar a calculadora básica, ou bc.
2o - Sempre compare números inteiros e nunca reais
Sendo assim você vai precisar algo do tipo:
time=`ping -c1 replica.syntesis.com.br | awk -F = {'print $4'} | awk {'print $1'}`
#Agora você tem um valor que pode ser inteiro, como 150, mas provavelmente vai ser real, como 0.56, por exemplo.
#Primeiramente você precisa passar o valor real para inteiro, ou seja, converter de microsegundos para ms
sTime=`echo "$time * 100" | bc`
#Agora você tem a conversão em ms, mas ainda tem o problema do número ser real, sendo assim você precisa retirar as casas decimais para ficar um número inteiro
timeCompare="$(echo $sTime | sed 's/.00//')"
#Agora sim você pode comparar da forma como você estava fazendo, mas lembre-se que se você quer 150 milesegundos como referência, tem que multiplicar esse valor por 100, devido a conversão que foi feita anteriormente
if [ "$timeCompare" -lt 15000]; then
faça isto
else
faça aquilo
fi
Verifique se funciona desse jeito...