test de variables en shell

test de variables en shell - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 06-10-2011 à 23:46:09    

Salut à tous.
Je commence à coder en shell, et mon programme fonctionne bien, plutôt fier de moi pour un début  :D  
J'ai juste un soucis pour le moment, je voudrais comparer deux variables (via un test for sure) qui ne serait pas entières.
Dans mon script, je cherche à savoir si ma valeur de ping est plus petite qu'une autre, sauf que cette valeur comporte une virgule.
Je pense avoir une piste, en "coupant" ma variable avec awk par exemple, mais j'aimerais savoir s'il est possible de faire autrement.
Merci à vous  :jap:


---------------
1000 lasagnes
Reply

Marsh Posté le 06-10-2011 à 23:46:09   

Reply

Marsh Posté le 07-10-2011 à 06:45:56    

man bc.
 
$> a=1.2
$> b=2.5
$> echo "$a>$b"|bc
0
$> echo "$a<$b"|bc
1


---------------
HFRCoin: 7f1PV1XZc2W9848ykRFEwTuCZzchtTT83W -- Tu l'as trop écrasé, César, ce Port-Salut !
Reply

Marsh Posté le 07-10-2011 à 09:19:40    

merci pour ta réponse, je vais test de suite avec bc.  :jap:  
A la base, mon script est en bash, donc je peux pas comparer deux nombres non entiers ... Je sais pas si bc va fonctionner en bash.
 
edit : je n'arrive pas à faire fonctionner ce système. Apparemment |bc après une opération renvoie 0 si c'est faux et 1 si c'est vrai.
J'ai donc fais un |bc avant de rentrer dans ma bouche mais j'ai le même problème.

Code :
  1. test1="&(($minPing -gt $ping))"|bc
  2. if test $test1 -eq 0 ; then
  3. minPing=$ping
  4. dateMinPing=$datePing
  5. fi

Message cité 1 fois
Message édité par @l Oue$t le 07-10-2011 à 09:34:45

---------------
1000 lasagnes
Reply

Marsh Posté le 07-10-2011 à 15:24:02    

@l Oue$t a écrit :

merci pour ta réponse, je vais test de suite avec bc.  :jap:
A la base, mon script est en bash, donc je peux pas comparer deux nombres non entiers ... Je sais pas si bc va fonctionner en bash.

 

edit : je n'arrive pas à faire fonctionner ce système. Apparemment |bc après une opération renvoie 0 si c'est faux et 1 si c'est vrai.
J'ai donc fais un |bc avant de rentrer dans ma bouche mais j'ai le même problème.

Code :
  1. test1="&(($minPing -gt $ping))"|bc
  2. if test $test1 -eq 0 ; then
  3. minPing=$ping
  4. dateMinPing=$datePing
  5. fi


 

Y'a pas trop de détails sur ce que tu veux faire ...
Mais à froid :

 
Code :
  1. test1=$(echo "$minPing>$ping"|bc)
  2. [[ "$test1" = "0" ]] && { minPing=$ping ; dateMinPing=$datePing ; }
 

non ?


Message édité par Benweb83 le 07-10-2011 à 15:24:43

---------------
HFRCoin: 7f1PV1XZc2W9848ykRFEwTuCZzchtTT83W -- Tu l'as trop écrasé, César, ce Port-Salut !
Reply

Marsh Posté le 07-10-2011 à 19:05:44    

Code :
  1. #!/bin/bash
  2. while [ true ] ; do
  3. timer24h=0
  4. minPing=1000
  5. maxPing=0
  6. succes=0
  7. echec=0
  8. moyennePing=0
  9. minCharge=1000
  10. maxCharge=0
  11. while test $timer24h -ne 288 ; do
  12.  ping -c1 google.com
  13.  if test $? -eq 0 ; then
  14.   heureDebut=$(date '+%s')
  15.   ping=$(ping -c1 127.0.0.1 | grep rtt | awk '{print $4}' | cut -d '/' -f3)
  16.  echo $ping
  17.   succes=$((succes+1))
  18.   datePing=$(date '+%Y-%m-%d %H:%M:%S')
  19.   if test $minPing -gt $ping ; then
  20.    minPing=$ping
  21.    dateMinPing=$datePing
  22.   fi
  23.   if test $maxPing -lt $ping ; then
  24.    maxPing=$ping
  25.    dateMaxPing=$datePing
  26.   fi
  27.   moyennePing=$(((moyennePing+valPing)/succes))
  28.   heureFin=$(date '+%s')
  29.   dureeExec=$((heureFin-heureDebut)) #voir le script "testSleep"
  30.   tempsSleep=$((300-dureeExec))
  31.   timer24h=$((timer24h+1))
  32.   echo $maxPing
  33.   echo $minPing
  34.   echo $moyenne
  35.   echo $maxPing
  36.   sleep $tempsSleep
  37.  else
  38.   echec=$((echec+1))
  39.  fi
  40. done
  41. done


Pour voir le code en entier.
Je vais essayer ta solution Benweb83, mais surement pas ce soir, 5 heures d'info sa m'a suffit \o/.
Merci encore.  :jap:
edit : c'est une partie du code, pour tester le ping justement ^^


Message édité par @l Oue$t le 07-10-2011 à 19:06:23

---------------
1000 lasagnes
Reply

Marsh Posté le 21-10-2011 à 23:42:25    

Code :
  1. aptitude install nagios

=)

Reply

Sujets relatifs:

Leave a Replay

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