Scripte souci avec boucle while read linux
florant
-
florent -
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 ?
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 ?
Configuration: Linux Mandriva Firefox 2.0.0.13
2 réponses
-
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.
-
-
ok ok super ca marche. merci beaucoup!
pourriez vous me décomposer la commande exec 6<&0 et read var <&6- 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
-
-
voilà pourquoi la méthode while read est à proscrire
il faut tjrs la remplacer par un forfor truc in $(cat fichier); do ... read a ... done
-
A condition de tenir compte de ce qui a été dit là ;-))
-