Comparer des floats (script bash)

Comparer des floats (script bash) - Shell/Batch - Programmation

Marsh Posté le 15-09-2006 à 11:15:57    

Bonjour,
 
je suis entrain de coder un petit script de monitoring big Brother d'un serveur VMWARE ESX.
J'essaye de comparer deux valeurs, mais une est un float et l'autre un entier.
 
Probleme j'ai ce message d'erreur :
 

bb-cpu.sh: [: 72.0446: integer expression expected


 
Y'a-t-il un moyen de comparer deux nombres sans se soucier que l'un soit un float?
 
La partie du code qui pose probleme :
 

Code :
  1. if [ "$CPU" -ge 95 ]
  2. then
  3.         CPUCOLOR="&red"
  4.         COLOR="red"
  5. else
  6.         if [ "$CPU" -ge 90 ]
  7.         then
  8.                 CPUCOLOR="&yellow"
  9.                 COLOR="yellow"
  10.         fi
  11. fi


$CPU contient par exemple le 72.0446 du dessus
 
Merci de votre aide


Message édité par doum le 15-09-2006 à 11:17:15
Reply

Marsh Posté le 15-09-2006 à 11:15:57   

Reply

Marsh Posté le 15-09-2006 à 11:18:09    

edit : ah mince, bash, j'suis en ksh... j'reviens.
 
edit 2 : bon, je trouve rien de mieux que de feinter en tronquant :

export taiste=95.125
 
if [ ${taiste//\.*/} -ge 95 ]
then
   ...
fi


Message édité par Elmoricq le 15-09-2006 à 11:36:33
Reply

Marsh Posté le 15-09-2006 à 11:30:15    

;)
 
EDIT: pourrais-tu m'expliquer ce que fais le ${taiste//\.+/}


Message édité par doum le 15-09-2006 à 11:30:52
Reply

Marsh Posté le 15-09-2006 à 11:34:41    

Ca efface tout caractère "." (point) et sa suite dans la variable $taiste.
Un sed à la volée, quoi. La valeur de la variable reste évidemment inchangée.
 
edit : y a une erreur dans ce que j'ai mis. Il faut utiliser "*" et non "+", c'est un PERL-isme, je corrige mes posts.
 
Exemple :

bash-2.03$ export taiste=95.125
bash-2.03$ echo ${taiste//\.*/}
95
bash-2.03$ echo $taiste
95.125
bash-2.03$  


Message édité par Elmoricq le 15-09-2006 à 11:38:29
Reply

Marsh Posté le 15-09-2006 à 12:03:04    

Merci beaucoup ca marche.
 
J'avais pensé a tronqué la variable mais j'avais un peu zappé comment faire...en plus je l'avais deja utilisé cette methode "en live" y'a 1 an ou deux il me semble


Message édité par doum le 15-09-2006 à 12:03:44
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed