====== read-Funktion ======
**read** wartet, bis der Benutzer seine Eingabe mit einem Zeilenumbruch (**[Enter]**) abgeschlossen hat. Wird read kein Argument (Variablenname) mitgegeben, so wird die gelesene Zeile der Shellvariablen **REPLY** zugewiesen. Folgen dem Kommando ein oder mehrere Variablennamen, so wird der Reihe nach das erste Token der Eingabe der ersten Variable zugewiesen, das zweite Token der zweiten Variable usw. Stehen mehr Token als Variablen zur Verfügung, erhält die letzte Variable alle noch nicht zugewiesenen Token. Sind es weniger Token, bleiben die überschüssigen Variablen unbelegt.
Ein read-Aufruf **blockiert**, es sei denn mit der Option "**-t Sekunden**" (:!: erst ab Bash 2.04!) wurde eine Zeitspanne vereinbart, nach der das Kommando spätestens zurück kehrt, selbst wenn noch keine Eingabe durch den Benutzer erfolgte. Anhand des Rückgabestatus kann entschieden werden, ob der Timeout die Rückkehr bedingte.
Im folgenden Skriptfragment wird zur Eingabe einer Zahl aufgefordert. Solange die Eingabe nicht dem erwarteten Typ entspricht, springt der Cursor an die Eingabeposition zurück:
function writeln()
{
tput cup $1 $2 # Cursor positionieren
tput el # Rest der Zeile löschen
shift 2 # Parameter für die Koordinaten entfernen
echo -n $*" " # Rest der Parameterliste ausgeben
}
tput clear
writeln 3 5 "Beliebige Zahl eingeben:"
while :; do
writeln 3 30
read wert
echo $wert | egrep -q '[[:digit:]]+' && break
tput bel
done
echo "Eingabe war: $wert"
Möchten Sie die Eingaben am Bildschirm verbergen (Passworteingabe etc.), so hilft die Terminalsteuerung über das Kommando **stty** weiter. Der folgende Programmausschnitt schaltet die Anzeige der eingegebenen Zeichen ab:
echo -n "Passwort :"
stty -echo
read $password
stty echo
----
Stand: 05.11.2009
EOF