BOUCLE WHILE READ LINE

Postez ici vos scripts Bash, Python, C++, etc...
Répondre
PHIL888
Messages : 15
Enregistré le : mar. 12 mai 2020 09:45

BOUCLE WHILE READ LINE

Message 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
System:
Host: philippe-Aspire-8735 Kernel: 5.4.0-80-generic x86_64 bits: 64
Desktop: Cinnamon 4.8.6 Distro: Linux Mint 20.1 Ulyssa
Machine:
Type: Laptop System: Acer product: Aspire 8735 v: 0100

Processes: 193 Uptime: 21m Memory: 3.84 GiB used: 2.32 GiB (60.3%)
Shell: bash inxi: 3.0.38
PHIL888
Messages : 15
Enregistré le : mar. 12 mai 2020 09:45

Re: BOUCLE WHILE READ LINE

Message 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
System:
Host: philippe-Aspire-8735 Kernel: 5.4.0-80-generic x86_64 bits: 64
Desktop: Cinnamon 4.8.6 Distro: Linux Mint 20.1 Ulyssa
Machine:
Type: Laptop System: Acer product: Aspire 8735 v: 0100

Processes: 193 Uptime: 21m Memory: 3.84 GiB used: 2.32 GiB (60.3%)
Shell: bash inxi: 3.0.38
PHIL888
Messages : 15
Enregistré le : mar. 12 mai 2020 09:45

Re: BOUCLE WHILE READ LINE

Message 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....
System:
Host: philippe-Aspire-8735 Kernel: 5.4.0-80-generic x86_64 bits: 64
Desktop: Cinnamon 4.8.6 Distro: Linux Mint 20.1 Ulyssa
Machine:
Type: Laptop System: Acer product: Aspire 8735 v: 0100

Processes: 193 Uptime: 21m Memory: 3.84 GiB used: 2.32 GiB (60.3%)
Shell: bash inxi: 3.0.38
Avatar du membre
thyam
modérateur
Messages : 8840
Enregistré le : mar. 14 juil. 2015 10:33
Localisation : Lille - Hauts de France

Re: BOUCLE WHILE READ LINE

Message par thyam »

'Jour,
sur FFLM, on l'appelle l'ICC :) ;)
pc principal : Hp pavilion dv6 - core i5 - 8go ram - DD 1 to - CG dual Intel HD graphics 3000 / Amd Radeon HD 7400m / OS : W$ 11
pc 2 : Dell e6420 - core i5 - 4go ram - DD 300 go - CG Intel HD graphics 3000 / OS : dual boot Linux Mint 22.2 XFCE - W$ 10
pc 3 : Asus M70V - core 2 Duo P8600 - 4go ram - CG Nvidia Geforce 9850M GT / OS : DD1 LMDE 7 Cinnamon / DD2 W$ 11

« Seul, on va plus vite... Ensemble, on va plus loin ;) »
Répondre