Befehl "read"
Zweck
Liest eine Zeile aus der Standardeingabe.
Syntax
Lesen [-p] [ -r ] [-s][-u [ n ]][ VariableName?Eingabeaufforderung]
Beschreibung
Der Befehl read liest eine Zeile aus der Standardeingabe und ordnet die Werte jedes Felds in der Eingabezeile einer Shellvariablen zu. Dabei werden die Zeichen in der Variablen IFS (Internal Field Separator) als Trennzeichen verwendet. Der Parameter Variablenname gibt den Namen einer Shellvariablen an, die den Wert eines Felds aus der Eingabezeile übernimmt. Der ersten über den Parameter Variablenname angegebenen Shellvariablen wird der Wert des ersten Felds, der zweiten über den Parameter Variablenname angegebenen Shellvariablen wird der Wert des zweiten Felds zugeordnet und so weiter, bis das letzte Feld erreicht ist. Wenn die Zeile der Standardeingabe mehr Felder hat, als es entsprechende Shellvariablen gibt, die über den Paramter Variablenname angegeben sind, werden der letzten Shellvariablen die Werte aller verbleibenden Felder zugeordnet. Wenn weniger Felder als Shellvariablen vorhanden sind, werden die verbleibenden Shellvariablen als leere Zeichenfolgen festgelegt.
Die Einstellung der Shellvariablen über den Befehl read wirkt sich auf die aktuelle Shellausführungsumgebung aus.
Flags
| Element | Beschreibung |
|---|---|
| -p | Liest die Eingabe aus der Ausgabe eines Prozesses, der von der Korn-Shell mit |& (Pipe, Et-Zeichen) ausgeführt wird. Anmerkung: Ein Dateiendezeichen mit dem Flag -p bewirkt eine Bereinigung für diesen Prozess, sodass ein anderer erstellt werden kann.
|
| -r | Gibt an, dass der Lesebefehl einen \ (Backslash) als Teil der Eingabezeile und nicht als Steuerzeichen behandelt. |
| -s | Speichert die Eingabe als Befehl in der Protokolldatei der Korn-Shell. |
| -u [ n ] | Liest Eingabe aus der einstelligen Dateideskriptornummer n. Der Dateideskriptor kann mit dem integrierten Befehl ksh exec geöffnet werden. Der Standardwert für n ist 0, der sich auf die Tastatur bezieht. Ein Wert von 2 verweist sich auf einen Standardfehler. |
Parameter
| Element | Beschreibung |
|---|---|
| VariableName?Eingabeaufforderung | Gibt den Namen einer Variablen und eine zu verwendenden Eingabeaufforderung an. Wenn die Korn-Shell interaktiv ist, schreibt sie die Eingabeaufforderung in eine Standardfehlerausgabe und führt dann die Eingabe aus. Wenn die Angabe für die Eingabeaufforderung mehr als ein Wort enthält, müssen Sie sie in einfache Anführungszeichen oder in doppelte Anführungszeichen einschließen. |
| VariableName... | Gibt einen oder mehrere Variablennamen an, die durch Leerzeichen getrennt sind. |
Exitstatus
Dieser Befehl gibt die folgenden Exitwerte zurück:
| Element | Beschreibung |
|---|---|
| 0 | Erfolgreiche Ausführung. |
| >0 | Es wurde ein Dateiendezeichen erkannt, oder es ist ein Fehler aufgetreten. |
Beispiele
- Das folgende Script druckt eine Datei, wobei das erste Feld jeder Zeile an das Ende der Zeile verschoben wird:
while read -r xx yy do print printf "%s %s/n" $yy $xx done < InputFile - Geben Sie Folgendes ein, um eine Zeile zu lesen und in Felder aufzuteilen und
Please enter:
als Eingabeaufforderung zu verwenden:
Die Systemanzeige zeigt Folgendes an:read word1?"Please enter: " word2
Der Wert der Variablen word1 mussPlease enter: You enter: hello worldHallo
und word2 mussWelt
haben. - Geben Sie Folgendes ein, um einen Co-Prozess zu erstellen, verwenden Sie dann print -p , um in den Co-Prozess zu schreiben, und read -p , um die Eingabe aus dem Co-Prozess zu lesen:
Der Wert der Variablen Zeile sollte(read; print "hello $REPLY") print -p "world" read -p linehello world
haben. - Geben Sie Folgendes ein, um eine Kopie der Eingabezeile als Befehl in der Protokolldatei zu speichern:
Wenn die Eingabedateiread -s line < input_fileecho hello world
enthält, wirdecho hello world
als Befehl in der Verlaufsdatei gespeichert.