Befehl "read"

Zweck

Liest eine Zeile aus der Standardeingabe.

Syntax

Lesen [-p] [ -r ] [-s][-u [ n ]][ VariableName?Eingabeaufforderung]

[VariableName ... ]

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.

Anmerkung: Wenn Sie den Parameter VariableName nicht angeben, wird die Variable REPLY als Standardvariablenname verwendet.

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

  1. 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
  2. Geben Sie Folgendes ein, um eine Zeile zu lesen und in Felder aufzuteilen und Please enter: als Eingabeaufforderung zu verwenden:
    read word1?"Please enter:  " word2
    Die Systemanzeige zeigt Folgendes an:
    Please enter:
    You enter:
    hello world
    Der Wert der Variablen word1 muss Hallo und word2 muss Welthaben.
  3. 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:
    (read; print "hello $REPLY") 
    print -p "world"
    read -p line
    Der Wert der Variablen Zeile sollte hello worldhaben.
  4. Geben Sie Folgendes ein, um eine Kopie der Eingabezeile als Befehl in der Protokolldatei zu speichern:
    read -s line < input_file
    Wenn die Eingabedatei echo hello worldenthält, wird echo hello world als Befehl in der Verlaufsdatei gespeichert.