![]() ![]() ![]() |
![]() ![]() |
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...
![]() ![]() ![]() |
![]() ![]() |