Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1044 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Problème avec boucle while qui ne s'arrêt pas

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème avec boucle while qui ne s'arrêt pas

n°1935210
hppp
Serveur@home
Posté le 25-10-2009 à 11:24:08  profilanswer
 

Salut a tous
 
Voilà mon fichier shell en question ou il y a ma boucle while qui ne s'arrête pas:
 
j'ai donc un fichier ping.txt avec 4 ip donc 4 lignes
quand je fais un echo $NBS_LIGNE j'ai bien 4 lignes
 

Code :
  1. #!/bin/bash
  2. FILE="/home/test/ping.txt"
  3. NBS_LIGNE=`wc -l ping.txt | cut -d" " -f1`
  4. i=1
  5. while [ $i=$NBS_LIGNE ]
  6. do
  7.         HOSTNAME=`head -n $i ping.txt | tail -n 1`
  8.         /bin/ping -c3 $HOSTNAME
  9.         if [ $? != 1 ]
  10.         then
  11.                 echo "$HOSTNAME;OUI"
  12.         else
  13.                 echo "$HOSTNAME;NON"
  14.         fi
  15. i=$(($i + 1))
  16. done


 
mais le problème c'est que quand il arrive à la dernier ligne il ne s'arrête pas. Avez vous une idée du problème? Merci

mood
Publicité
Posté le 25-10-2009 à 11:24:08  profilanswer
 

n°1935212
esox_ch
Posté le 25-10-2009 à 11:53:51  profilanswer
 

Pourquoi t'utilises pas $i < $NBR_LIGNE comme condition? Parce que là je comprend même pas pourquoi ton programme marche vu que $i !=$NBS_LIGNE à la première execution :heink:


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1935213
hppp
Serveur@home
Posté le 25-10-2009 à 12:08:10  profilanswer
 

si je met se que tu me dis il me met:

 

./script_ping.sh: line 11: 4: Aucun fichier ou répertoire de ce type

 

je vois pas du tous le rapport.

Message cité 1 fois
Message édité par hppp le 25-10-2009 à 12:08:24
n°1935226
esox_ch
Posté le 25-10-2009 à 13:05:27  profilanswer
 

hppp a écrit :

si je met se que tu me dis il me met:

 

./script_ping.sh: line 11: 4: Aucun fichier ou répertoire de ce type

 

je vois pas du tous le rapport.

 

Excuse,tu as tout à fait raison, j'ai parlé trop vite :o

 

Donc voilà la structure que je pense que tu va devoir utiliser

 
Code :
  1. $i = 1;
  2.  
  3. while [ $i -lt $NBS_LIGNE ];
  4. do
  5.  ...traitement
  6.  let i+=1
  7. done
 

Edit : Le message d'erreur qu'il te donne est logique car l'opérateur "<" est une redirection de flux, et non l'opérateur "plus petit que" (qui lui est -lt).


Message édité par esox_ch le 25-10-2009 à 13:06:42

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1935241
hppp
Serveur@home
Posté le 25-10-2009 à 15:03:14  profilanswer
 

c'est pas tip top comme langage quand même le shell je trouve.

n°1935244
esox_ch
Posté le 25-10-2009 à 15:11:55  profilanswer
 

C'est toi qui fait ça en shell hein :o


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1935342
pataluc
Posté le 26-10-2009 à 09:50:37  profilanswer
 

hppp a écrit :

c'est pas tip top comme langage quand même le shell je trouve.

 

c'est pas l'outil ultime, mais si on ne fait pas n'importe quoi, c'est quand même pratique...

 

Pourquoi compter les lignes, pour faire un head puis un tial, quand on peut faire une boucle sur un cat? 0_o

 
Code :
  1. #!/bin/bash
  2. FILE="/home/test/ping.txt"
  3.  
  4. for HOSTNAME in `cat $FILE`
  5. do
  6.        /bin/ping -c3 $HOSTNAME
  7.        if [ $? != 1 ]
  8.        then
  9.                echo "$HOSTNAME;OUI"
  10.        else
  11.                echo "$HOSTNAME;NON"
  12.        fi
  13. done
 


Message édité par pataluc le 26-10-2009 à 09:50:45
n°1935565
esox_ch
Posté le 26-10-2009 à 22:19:44  profilanswer
 

Parce que je suis une brèle en Bash et apparemment l'auteur du topic l'est aussi :o
 
Même si c'est lent, que c'est overkill & co, dès que je dois faire un truc de ce genre je passe par Ruby... parce qu'en même temps, le jour où tu veux commencer à rajouter 2-3 features à ton script, t'es relativement vite dans la merde en Bash :o


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Problème avec boucle while qui ne s'arrêt pas

 

Sujets relatifs
[PHP] Include. Problème de mise en place.Problème pour déclencher un input type=file
probleme d'affichage javascriptiso8859-1 > UTF8 probleme avec a accent grave
Problème:boite de dialogue alert() avec chrome+safari - [Résolu][html] Problème sur un formulaire avec plusieurs boutons submit
[ejb] petit probleme avec le context.lookup()Problème de conception ?
.css probleme compatibilité serveur - detecté via dreamweaverProblème de virus sur ce site ? Merci
Plus de sujets relatifs à : Problème avec boucle while qui ne s'arrêt pas


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR