Page 1 sur 1

BOUCLE WHILE READ LINE

Posté : jeu. 14 oct. 2021 11:55
par PHIL888
Bonjour à tous,

ma question va probablement vous paraître facile, mais je tombe sur un cas que je n'ai pas encore rencontré :
Dans mon script, je dois lire le même fichier deux fois...la première fois tout se passe bien, et bash ignore la deuxième. Il y a surement une remise à zéro qui m'échappe...
voici la partie de script qui pose problème : ( j'ai omis volontairement toute la partie de traitement...sed et autre...pour que ce soit plus lisible )

Code : Tout sélectionner

while read ligne
do 
echo $ligne
done < line.txt

read -p "stop" stop1

while read ligne
do 
echo "$ligne" 
done < line.txt

merci pour votre avis

Re: BOUCLE WHILE READ LINE

Posté : jeu. 14 oct. 2021 15:18
par PHIL888
Merci pour la réponse.

J'ai essayé avec IFS...ça donne le même résultat.
Il s'arrête après la première lecture...
Après avoir fait entrée,
il ne fait pas la deuxième boucle while read line...
message :
[2]+ Arrêté ./essread.sh


L'intérêt de lire deux fois le fichier, c'est :
la première lecture recherche une occurence dans un fichier A.txt, quand il la trouve, il enregistre le numéro de ligne dans line.txt

A la deuxième lecture, il "devrait" repartir à la ligne du fichier A.txt et afficher le contenu sur l écran et dans un fichier ( avec tee ) , puis passer à la référence suivante...sans lire à nouveau tout le fichier A.TXT. Cela permet de garder une trace des recherches et d'archiver quelques lignes au lieu de relire à chaque fois des milliers de lignes..

La question, c'est après la première boucle WHILE READ LINE, y a t'il possibilité de remettre à zéro, comme s'il entrait dans le programme ( j'ai aussi essayé en changeant le nom du fichier...

merci pour votre aide



J

Re: BOUCLE WHILE READ LINE

Posté : lun. 18 oct. 2021 09:39
par PHIL888
Merci à Cyrille et à tous pour votre aide.

J'ai laissé "refroidir" le problème, et j'ai trouvé la solution...

Cela venait évidemment de moi.

Mon script était lancé par un autre script, ( oui, oui, c'est un peu -usine à gaz - ), dans lequel j'ai fait l'erreur suivante :

./monscript.sh &

Dûe à l'habitude de lancer l'éditeur avec : gedit monscript.sh & , pour avoir la main sur le terminal....

Du coup,, il sortait du script ou ignorait les interruptions....( read -p) . A priori, cela a aussi une incidence sur cette fameuse boucle while read line....

Si je lance "normalement" avec ./monscript.sh, tout se passe à nouveau normalement....

Mes excuses pour ce casse-tête....

Merci encore.

Citation à méditer : Le périphérique le plus souvent en cause lors d'une erreur, est celui qui se situe entre l'écran et le dossier de la chaise....

Re: BOUCLE WHILE READ LINE

Posté : lun. 18 oct. 2021 10:08
par thyam
'Jour,
sur FFLM, on l'appelle l'ICC :) ;)