Scripte souci avec boucle while read linux

Fermé
florant - 9 mai 2008 à 00:19
 florent - 9 mai 2008 à 11:25
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 Date d'inscription vendredi 25 avril 2008 Statut Membre Dernière intervention 15 juin 2008 4
9 mai 2008 à 00:48
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
ok ok merci je vais tester ca de suite... je vous tiens au courant =D
0
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 Date d'inscription vendredi 25 avril 2008 Statut Membre Dernière intervention 15 juin 2008 4 > florant
9 mai 2008 à 11:00
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 Date d'inscription vendredi 25 avril 2008 Statut Membre Dernière intervention 15 juin 2008
9 mai 2008 à 11:25
nickel ;)
merci
0
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 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
9 mai 2008 à 10:58
A condition de tenir compte de ce qui a été dit là ;-))
0