Scripte souci avec boucle while read linux

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 ?
Configuration: Linux Mandriva
Firefox 2.0.0.13

2 réponses

  1. 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.
    1. ok ok merci je vais tester ca de suite... je vous tiens au courant =D
    2. ok ok super ca marche. merci beaucoup!

      pourriez vous me décomposer la commande exec 6<&0 et read var <&6
    3. @florantexec 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

  2. 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