[gull] bash >> read imbriqué

Jean Pierre Rupp jpierre at xeno-genesis.com
Thu Sep 24 20:32:39 CEST 2009


#!/bin/bash

exec 3<&0
while read fichier ; do
   echo "supprimer le fichier $fichier ?[o/n]"
   exec 4<&0
   exec <&3
   while read reponse ; do
      if [ "$reponse" = "o" ] ; then
         echo "on supprime le fichier >$fichier<"
         break
      elif [ "$reponse" = "n" ] ; then
         echo "non, on passe au suivant"
         break
      fi
   done
   exec <&4
done << EOF
fichier1
fichier2
fichier3
fichier4
EOF


Le jeudi 24 septembre 2009 à 16:41 +0200, BRINER Cedric a écrit :
> Salut à tous amoureux du bash,
> 
> comment faire dans ce genre de situation:
> 
> #!/bin/bash
> 
> while read fichier ; do
>    echo "supprimer le fichier ${fichier} ?[o/n]"
>    while read reponse ; do
>       if [ "$reponse" = "o" ] ; then
>          echo 'on supprime le fichier >${fichier}<'
>          break
>       elif [ "$reponse" = "n" ] ; then
>          echo "non, on passe au suivant"
>          break
>       fi
>    done
> done << EOF
> fichier1
> fichier2
> fichier3
> fichier4
> EOF
> 
> --------------------
> je comprends le problème, c'est qu'on se retrouve avec 2 read qui lise 
> la même sortie et l'un vide l'autre, ce qu'on remarque avec un simple 
> echo dans le code
> 
> #!/bin/bash
> 
> while read fichier ; do
>    echo "supprimer le fichier ${fichier} ?[o/n]"
>    while read reponse ; do
>       echo " - reponse fournie: ${reponse}"
>       if [ "$reponse" = "o"  ] ; then
>          echo 'on supprime le fichier >${fichier}<'
>          break
>       elif [ "$reponse" = "n" ] ; then
>          echo "non, on passe au suivant"
>          break
>       fi
>    done
> done << EOF
> fichier1
> fichier2
> fichier3
> fichier4
> EOF
> 
> 
> --------------------
> mais comment faire alors ???
> 
> cEd
> P.-S. Ca sent à plein fouet le exec, mais j'y comprends rien
> _______________________________________________
> gull mailing list
> gull at forum.linux-gull.ch
> http://forum.linux-gull.ch/mailman/listinfo/gull



More information about the gull mailing list