Boucle while script shell

hyde Messages postés 9 Statut Membre -  
 Utilisateur anonyme -
Bonjour,

Venant tout juste de commencer le scriping shell, j'ai fait un petit script qui teste si ma machine a une connexion internet en effectuant un simple ping à google.fr.
Le but est de sortir de la boucle en cas d'échec du ping ou de faire le ping "indéfiniment" si google est toujours joignable.

Mon script est le suivant:

PING='/bin/ping'
EXTHOST1='www.google.com'
etat=true
count=0

while [ $etat ]
do

$PING -c1 $EXTHOST1 1>/dev/nul
ret=$?
if [ $ret -ne 0 ]
then
#count=$(($count + 1))
echo "ping n a pas marche, nbre de fois =$count "
etat=false
sleep 4
elif [ $ret -eq 0 ]
then
#count=$(($count + 1))
echo "ping a marche, $etat, nbre de fois =$count "
etat=true
sleep 4
fi
done

Mon problème: je n'arrive pas à sortir de ma boucle lorsque le ping ne marche pas et que ma variable etat passe à false.
Quelqu'un a-t-il une idée de là ou j'ai fait une erreur?

Merci

1 réponse

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    while [ "${etat}" = true ] 

    Devrait aller mieux ;-))

    Et c'est "/dev/null" avec 2 ELLES et non un seul ;-\
    0
    1. Utilisateur anonyme
       
      salut,

      - le test de hyde sur la variable etat sera toujours vrai, car dans son code elle existe toujours et a toujours une valeur.
      je suggère
      while $etat; do
      tout simplement ($etat. étant true, ou false)

      - le elif n'est pas utile, un simple else suffit
      0