Testen von Bedingungen Der Kommandozeileninterpreter Bash Einfache Berechungen Inhalt Index


Werte einlesen mit read

Mit read werden in Shellprogrammen Variablen mit Eingabewerten belegt:

   
#!/bin/sh
# numerischen Wert einlesen
a=            # a loeschen
while [ -z "$a" ]; do
	echo -n "Geben Sie eine Zahl ein: " 
	read a
	a=${a##*[^0-9,' ',-]*} 
	if [ -z "$a" ]; then
		echo "Ungueltige Eingabe!"
	fi
done
echo $a


Mit einem Aufruf können mehrere Werte eingelesen werden:

#!/bin/sh

echo -n "Bitte Alter und Name eingeben: "
read alter name
echo "$name ist $alter Jahre alt."


read belegt der Reihe nach die Variablen mit den Eingaben. Im Normalfall ist jede durch ein Leerzeichen oder einen Tabulator begrenzte Zeichenkette für read eine neue Eingabe. Dieses Trennzeichen kann aber beliebig mittels der Shellvariablen IFS geändert werden.
Konnte read nur weniger Eingaben als gefordert lesen, wird den restlichen Variablen nichts zugewiesen; stehen mehr Zeichenketten in der Eingabe, erhält die letzte Variable alle noch nicht zugewiesenen Zeichenketten. Zur Demonstration starten wir das obige Shellskript:

user@sonne> ./beispiel_skript
Bitte Alter und Name eingeben: 0815 Homer Simpson
Homer Simpson ist 0815 Jahre alt.


Mit der Option -p wird read ein Eingabeprompt erzeugen:

user@sonne> read -p "Prompt:> " testvar
Prompt:> a stupid example

user@sonne> echo $testvar
a stupid example


Anstatt eine Liste von Variablen für das Einlesen von Werten zu benutzen, ist es einfacher, ein Feld (array) zu verwenden. Unabhängig von der Anzahl der Elemente in der Eingabe wird die Array-Variable genau mit der richtigen Größe angelegt.

user@sonne> read -a array
Zugriff auf die Elemente:

user@sonne> echo "1.Element ${array[0]}, 2.Element ${array[1]}..."
1.Element Zugriff, 2.Element auf...


Testen von Bedingungen Der Kommandozeileninterpreter Bash Einfache Berechungen Inhalt Index