Scripte souci avec boucle while read linux

florant -  
 florent -
Bonjour,

BOnsoir j'ai un souci, je sêche depuis tous a l'heure

jréalise un script sous linux actuellement mon souci est le suivant:

j'utilise une boucle de type while read ligne

-----------------------------
while read ligne
do

done < fichier
----------------------------

j'aimerai pouvoir insérer un read dans la boucle


-----------------------------
while read ligne
do
read a
done < fichier
-----------------------------

mais le n'est pas prise en compte comment faire ?
A voir également:

2 réponses

touchepasaugrisbi Messages postés 75 Statut Membre 4
 
Bonsoir,

Tu pourrais essayer quelque chose comme ça :

#! /bin/bash

...

# Duplique la sortie par défaut (le clavier : stdin ou '0') dans un descripteur de fichier (ici '6')
exec 6<&0

while read line
do 
   ...
   read var <&6
   ...
done < fichier

# RAZ de la sortie par défaut
exec 0<&6 6<&-

...


;-)

Bon courage.
0
florant
 
ok ok merci je vais tester ca de suite... je vous tiens au courant =D
0
florant
 
ok ok super ca marche. merci beaucoup!

pourriez vous me décomposer la commande exec 6<&0 et read var <&6
0
touchepasaugrisbi Messages postés 75 Statut Membre 4 > florant
 
exec 6<&0
Le exec permet de rediriger l'entrée standard, par défaut le clavier, encore appelé stdin ou descripteur de fichier 0 (file descriptor ou fd).
Dès que tu as exécuté cette commande, tout ce qui arrive au clavier se retrouve automatiquement dans le fd 6.

read var<&6
Tu indique qu'il faut lire l'entrée fd 6 (à la place de l'entrée standard...) et ranger la valeur lue dans la variable read.

Pour plus de détail, tu peux aller voir ici :
http://pagesperso-orange.fr/gleu/absfr.tuxfamily.org/abs-2.3-fr/io-redirection.html

0
florent > touchepasaugrisbi Messages postés 75 Statut Membre
 
nickel ;)
merci
0
dieu
 
voilà pourquoi la méthode while read est à proscrire



il faut tjrs la remplacer par un for


for truc in $(cat fichier); do 
...
read a
...
done
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
A condition de tenir compte de ce qui a été dit là ;-))
0