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

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [ KSH ] Etrange comportement d'un while dans un for - RESOLU -

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ KSH ] Etrange comportement d'un while dans un for - RESOLU -

n°1964994
Kerrozen
To be or not to be ... cool ..
Posté le 11-02-2010 à 13:53:22  profilanswer
 

Bonjour,  
 
J'ai tenté un truc assez simple en shell ksh, mais surprise, le résultat n'est pas du tout ce que je demande, explication :
 
BUT : rechercher des fichiers listés dans une fichier source dans différentes arborescences ayant un nom de USER composé d'un mot et d'un incide.
Genre CPT01, CPT02, CPT03 etc etc....
 
Pour l'instant je bataille simplement avec les deux boucles inclusives pour simplifier le code :

Code :
  1. typeset -Z2 i=1
  2. for fic in $(cat ${1})
  3. do
  4. # Boucle de recherche dans chaque couloir
  5. while [ ${i} -le 3 ]
  6. do
  7.  # Rechercher sur un couloir
  8.  echo "Recherche fichier <${fic}> sur le compte CPT${i}"
  9.  i=$((${i}+1))
  10. done
  11. done


 
Le fichier en entrée ne contient, pas exemple que trois ligne "titi", "toto", "tata"
 
Le résultats est assez déroutant : la boucle du FOR ne prend que la première ligne tandis que le while est entièrement traité :
 
./test.ksh toto
Recherche fichier <titi> sur couloir TEST01
Recherche fichier <titi> sur couloir TEST02
Recherche fichier <titi> sur couloir TEST03
 
 
Maintenant si j'adapte le code pour avoir deux FOR (solution que je trouve un peu plus sale du fait de l'énumération des cas à la main...
 

Code :
  1. typeset -Z2 i=1
  2. for fic in $(cat ${1})
  3. do
  4. # Boucle de recherche dans chaque couloir
  5. for i in 1 2 3
  6. do
  7.  # Rechercher sur un couloir
  8.  echo "Recherche fichier <${fic}> sur couloir TEST${i}"
  9. done
  10. done


 
Ben là ça marche super :  
 
./test.ksh toto
Recherche fichier <titi> sur couloir TEST01
Recherche fichier <titi> sur couloir TEST02
Recherche fichier <titi> sur couloir TEST03
Recherche fichier <toto> sur couloir TEST01
Recherche fichier <toto> sur couloir TEST02
Recherche fichier <toto> sur couloir TEST03
Recherche fichier <tata> sur couloir TEST01
Recherche fichier <tata> sur couloir TEST02
Recherche fichier <tata> sur couloir TEST03
 
Ce n'est pas vraiment un problème seulement ça me détruit de ne pas comprendre le coup du while ! Car derrière biensûr il s'agit de transformer la valeur en dur du nombre d'environnements à tester (ici 3) en un variable, histoire d'avoir un joli WHILE [ ${i} -le ${max_env} ]....
 
Voilà voilà, si un gourou local KSH pouvait me prêter sa Lumière ^^
 
Merci d'avance


Message édité par Kerrozen le 16-02-2010 à 15:25:19
mood
Publicité
Posté le 11-02-2010 à 13:53:22  profilanswer
 

n°1965051
pataluc
Posté le 11-02-2010 à 16:25:29  profilanswer
 

ca répond pas à la question, mais en ce qui concerne l'énumération à la main, tu peux utiliser seq.
 
seq 10 => 1 2 3 4 5 6 7 8 9 10 par exemple.
 

n°1965077
pataluc
Posté le 11-02-2010 à 16:46:57  profilanswer
 

euh, sinon je crois que j'ai trouvé ton problème... tu initialise ton i en dehors de ton for...

n°1965148
Kerrozen
To be or not to be ... cool ..
Posté le 11-02-2010 à 18:40:14  profilanswer
 

Ben euh.... je pense pas que ce soit ça le souci :
quand tu arrives dans le while, le i est bien initialisé à 1, et donc inférieur à 3 ; sinon tu auras pas les trois lignes en sortie indexées sur TESTXX
 
Donc le while est correctement exécuté, c'est la boucle du FOR au dessus qui n'est plus active à la sortie du while qui me gène et que je ne comprend pas.
 
Mais merci quand même d'avoir jeté un oeil ;-)

n°1965386
art_dupond
je suis neuneu... oui oui !!
Posté le 12-02-2010 à 12:28:19  profilanswer
 

Kerrozen a écrit :

Ben euh.... je pense pas que ce soit ça le souci :
quand tu arrives dans le while, le i est bien initialisé à 1, et donc inférieur à 3 ; sinon tu auras pas les trois lignes en sortie indexées sur TESTXX
 
Donc le while est correctement exécuté, c'est la boucle du FOR au dessus qui n'est plus active à la sortie du while qui me gène et que je ne comprend pas.
 
Mais merci quand même d'avoir jeté un oeil ;-)


La première fois uniquement (pour le premier $fic)


---------------
oui oui
n°1965654
Sve@r
Posté le 13-02-2010 à 09:38:30  profilanswer
 

Kerrozen a écrit :

Ben euh.... je pense pas que ce soit ça le souci :
quand tu arrives dans le while, le i est bien initialisé à 1, et donc inférieur à 3 ; sinon tu auras pas les trois lignes en sortie indexées sur TESTXX
 
Donc le while est correctement exécuté, c'est la boucle du FOR au dessus qui n'est plus active à la sortie du while qui me gène et que je ne comprend pas.
 
Mais merci quand même d'avoir jeté un oeil ;-)


 
Mets ton i à 1 avant le while mais après le "do" du premier for  :p


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1966519
Kerrozen
To be or not to be ... cool ..
Posté le 16-02-2010 à 15:24:27  profilanswer
 

Sve@r a écrit :


 
Mets ton i à 1 avant le while mais après le "do" du premier for  :p


 
 :heink:  
...
 
ah bah euh... bah...  
 
...
 
Bah voui en fait hein... c'est mieux de réinitialiser la variable pour chaque passage ; ça fonctionne nettement mieux !  :ange:  
 
Bon ben, merci d'avoir palié à mon excès de neuneutisation sur ce coup là.  
 
J'vais peut-être penser à me reconvertir dans la pizza à domicile, ou l'élevage d'escargot ^^  :sweat:  
 
Sujet clos, merci à vous !


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

  [ KSH ] Etrange comportement d'un while dans un for - RESOLU -

 

Sujets relatifs
[resolu] recherche et insertion structure liste chaine: la V2Manipulation de bits. (RESOLU)
[Résolu] Envoyer un signal à un autre ordinateur via internetRégion répétée de Dreamweaver : utiler le while plutôt que le do while
[Résolu]Suppression de dossier en VBS[Résolu] Exercice C, structure, type, compilation modulaire
[annulé/résolu]soucis onMouseOver et onMouseOut sur lien + image[résolu] problème avec getElementById et onload ...
[résolu] eviter blocage navigateur lors de recherche de villerésolu: problème curseur
Plus de sujets relatifs à : [ KSH ] Etrange comportement d'un while dans un for - RESOLU -


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