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

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Shell/Unix] Reactualisation de variable dans une boucle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Shell/Unix] Reactualisation de variable dans une boucle

n°2116787
chico008
what the wookie says ?
Posté le 15-12-2011 à 14:54:28  profilanswer
 

Bonjour,  
 
Je suis confronter a un problème
 
je doit faire une recherche successive de dependances de jobs.
pour cela j'ai créée une boucle while, avec en entré un fichier, contenant les dependances a rechercher.
juste avant de terminé la boucle, je met les nouvelles infos a rechercher, et je recommence.
 
Problème, en tant que tel, même en mettant le fichier a jour dans la boucle, le while prend toujours les memes infos en entrée.
Du coup j'ai fait une mini fonction qui relance la boucle, c'est moche, mais ca marche.
j'ai mis ca sous forme de fonction, et il me suffit d'appeler rech_pred.
 
Je sais qu'en batch Windows, il existe un setlocal enabledelayedexpansion, et je me demandais si y'avait pas un truc similaire sous KSH.
ce qui m'eviterais de faire un call de ma fonction en etant deja dedans.
 
Mon script actuel :

Code :
  1. rech_pred () { #recherche de predecesseurs
  2. while read PRED
  3. do
  4. ...
  5.  grep "\-$CPT" $WORK/DEP.lst | cut -f2 > $WORK/tmp_dep
  6.  renew rech_pred
  7. done < $WORK/tmp_dep
  8. }
  9. renew () { #relance de recherche $1 = fonction a relancer
  10. if [ -n "$(cat $WORK/tmp_dep)" ]
  11. then
  12.  $1
  13. fi
  14. }


---------------
Serveur HFR - OpenTTD
mood
Publicité
Posté le 15-12-2011 à 14:54:28  profilanswer
 

n°2116792
Profil sup​primé
Posté le 15-12-2011 à 15:17:16  answer
 

salut,
 
regarde si ça peut t'aider

Code :
  1. while [ -s fichier ]
  2. do
  3.   while read
  4.   do
  5.      ...
  6.      grep >fichier
  7.   done <fichier
  8. done

n°2116921
chico008
what the wookie says ?
Posté le 16-12-2011 à 12:35:17  profilanswer
 

pas mieux, le script ne rend jamais la main.
après interruption, la valeur dans le fichier n'a pas changer.


---------------
Serveur HFR - OpenTTD
n°2116939
Profil sup​primé
Posté le 16-12-2011 à 14:36:30  answer
 

je ne comprend pas

Code :
  1. $ cat fichier.list
  2. foo1
  3. bar1
  4. baz1
  5. foo2
  6. bar2
  7. baz2
  8. $ n=0
  9. $ dest=fichier.dest
  10. $ echo vide > $dest
  11. $ while [ -s "$dest" -a "$n" -lt 5 ]; do while read line; do grep '^foo' fichier.list >$dest; done <$dest; echo "boucle $((++n))"; done
  12. boucle 1
  13. boucle 2
  14. boucle 3
  15. boucle 4
  16. boucle 5
  17. $ cat $dest
  18. foo1
  19. foo2


Message édité par Profil supprimé le 16-12-2011 à 14:36:46

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

  [Shell/Unix] Reactualisation de variable dans une boucle

 

Sujets relatifs
Script TELNET Unix vers WindowsProblème affectation de classeur dans une variable
Extraire du texte de longueur variable dans une chaineAppel de procédure : variable non renvoyée
[Shell Unix] Active trace exeuction dans les fonctionsVariable tableau / Range("A1:A" & i) = montab - ne fonctionne pas
[Shell UNIX] Recherche dans une ligneespaces dans valeurs variable bloque appel à la fonction ?
Plus de sujets relatifs à : [Shell/Unix] Reactualisation de variable dans une boucle


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