[gull] Petit problème shell script

Marc SCHAEFER schaefer at alphanet.ch
Tue Nov 11 17:11:02 CET 2003


On Tue, Nov 11, 2003 at 04:06:06PM +0100, Blaise Drayer wrote:
> cat /etc/group | grep ":1[0-9][0-9]:" | cut -d':' -f1 | while read GROUP; do
> 
> echo "Add to $GROUP? [y/N] : ";                 read INPUT
> 
> if [ $INPUT = "Y" ]; then

Réécrivons pour mieux voir le contexte stdin/out/err

   grep < /etc/group ":1[0-9][0-9]:" \
      | cut -d':' -f1
      | (while read GROUP
         do
            echo blabla
            read INPUT
         done)

dans les () on a que stdin est connecté au pipe qui vient du
cut. C'est bien ce que lit le premier read.

Le deuxième read veut probablement lire le clavier. En supposant
que l'on n'a pas modifié la sortie d'erreur, celle-ci est aussi le
clavier. On peut aussi accéder directement à /dev/tty qui représente
le tty.

   read <&2 INPUT
ou

   read < /dev/tty INPUT

Remarque finale:
   Il serait peut-être mieux de séparer fonctionnement la base du script
   de l'interface utilisateur: générer toutes les opérations, puis
   laisser filtrer, et enfin exécuter ce qui n'a pas été filtré.




More information about the gull mailing list