read liest nicht

Achim Dreyer adreyer at math.uni-paderborn.de
Fri Oct 3 13:11:55 CEST 2003


On Fri, 3 Oct 2003, Kurt Gramlich wrote:

> Date: Fri, 3 Oct 2003 01:13:04 +0200
> From: Kurt Gramlich <k3r at gmx.net>
> To: lug-owl LinuxListe <linux at lug-owl.de>
> Subject: read liest nicht
> 
> hallo, 
> 
> wer sieht, warum read b nicht von STDIN liest?
> 
> 
> #!/bin/sh
> #set -x
> #set -e
> while read a
> do
> vorname=$(echo $a | cut -d " " -f 1) ;
> name=$(echo $a | cut -d " " -f 2) ;
> echo "${vorname} ${name}"
> /home/kurt/bin/suchperson.sh ${vorname} ${name}·
> echo 'neu? [Y|n]'·
> read b ;
> if [ $b = "Y" ] ; then
> echo "Sie haben <ja> getippt"
> elif [ $b = " " ] ; then
> echo "Sie haben nichts bestätigt"
> elif [ $b = n ] ; then
> echo "Sie haben <nein> getippt"
> else
> echo "Der Dialog wurde abgebrochen"
> fi
> done < namenliste.txt

.. hier wird der input file descriptor für die while-Schleifen Subshell 
umgebogen, da der filedescriptor nicht gespeichert wurde kann man dann in 
der Schleife nicht darauf zugreifen.

> in b steht immer schon der naechste Namen, why?
> 
> Viele Gruesse!
> Kurt
> 

So geht's:

-- snip --
exec 3<&0
while read a; do
  echo "gelesen: a = $a"
  echo 'eingabe: '
  read b <&3
  echo "b = $b"
done < /etc/hosts
-- snip --


Regards,
Achim Dreyer
--
A. Dreyer, Senior SysAdmin (UNIX&Network) / Internet Security Consultant




More information about the Linux mailing list