GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So verwenden Sie den Bash-Lesebefehl

Einführung

Die Bash read command ist ein integriertes Dienstprogramm, das Text aus der Standardeingabe liest. Das Tool bietet viele Funktionen zum Lesen von Benutzereingaben und hilft dabei, Bash-Skripte interaktiv zu machen.

Diese Anleitung erklärt, wie der Bash read command funktioniert durch verschiedene Beispiele und Anwendungsfälle.

Voraussetzungen

  • Zugriff auf die Befehlszeile/das Terminal.
  • Grundlagen der Arbeit mit Umgebungsvariablen.

Bash-Lese-Syntax

Die Syntax für die Bash read Befehl ist:

read <options> <arguments>

Der read Der Befehl nimmt die Benutzereingabe und teilt die Zeichenfolge in Felder auf, wobei jedes neue Wort einem Argument zugeordnet wird. Wenn es weniger Variablen als Wörter gibt, read speichert die verbleibenden Terme in der letzten Variablen.

Die Angabe der Argumentnamen ist optional. Der Befehl speichert die Eingabe eines Benutzers in $REPLY Variable standardmäßig.

Bash-Leseoptionen

Die Bash read Der Befehl enthält viele Optionen zur Steuerung der Benutzereingabe. Einige Optionen erfordern keine zusätzlichen Parameter, während andere obligatorische Parameter haben.

Die folgende Tabelle zeigt alle möglichen Befehlsoptionen und ihre Beschreibung.

Option Beschreibung
-a <array> Weist die bereitgestellte Wortfolge einer Variablen mit dem Namen <array> zu .
-d <delimiter> Liest eine Zeile bis zum angegebenen <delimiter> statt einer neuen Zeile.
-e Startet eine interaktive Shell-Sitzung, um die zu lesende Zeile zu erhalten.
-i <prefix> Fügt Anfangstext hinzu, bevor eine Zeile als Präfix gelesen wird.
-n <number> Kehrt nach dem Lesen der angegebenen Anzahl von Zeichen zurück, wobei das Trennzeichen berücksichtigt wird, um vorzeitig zu beenden.
-N <number> Gibt zurück, nachdem die angegebene Anzahl von Zeichen gelesen wurde, wobei das Trennzeichen ignoriert wird.
-p <prompt> Gibt die Aufforderungszeichenfolge aus, bevor die Benutzereingabe gelesen wird.
-r Backslashes deaktivieren, um Zeichen zu entkommen.
-s Gibt die Eingabe des Benutzers nicht wieder.
-t <time> Der Befehl läuft nach der angegebenen Zeit in Sekunden ab.
-u <file descriptor> Aus Dateideskriptor statt Standardeingabe lesen.

Lesen Sie weiter, um zu sehen, wie der Lesebefehl funktioniert arbeitet durch verschiedene Beispiele.

Bash-Lesebeispiele

Der read Befehlsfunktionen ohne Argumente oder Optionen. Führen Sie die folgenden Schritte aus, um den Befehl zu testen:

1. Öffnen Sie das Terminal.

2. Schreiben Sie den Befehl und drücken Sie Enter :

read

Die Eingabeaufforderung wartet auf die Benutzereingabe.

3. Geben Sie einen Satz ein und drücken Sie Enter .

Das Terminal kehrt in seinen normalen Zustand zurück.

4. Rufen Sie die Nachricht mit dem echo-Befehl ab:

echo $REPLY

Die $REPLY Variable speichert den read Befehlsnachricht.

Nachfolgend finden Sie Beispiele, die komplexere Anwendungsfälle für das Bash-read demonstrieren Befehl.

Argumente

Speichern Sie die Benutzereingabe in einer angegebenen Variablen, indem Sie ein Argument angeben:

read input

Rufen Sie die Nachricht ab mit:

echo $input

Alternativ können Sie die Benutzereingabe aufteilen in verschiedene Variablen durch Hinzufügen mehrerer Argumente.

Zum Beispiel:

read var1 var2

Die Benutzereingabe wird in einzelne Wörter aufgeteilt. Rufen Sie sie ab mit:

echo $var1
echo $var2

Wenn die Benutzereingabe mehr Wörter enthält als Variablen vorhanden sind, werden die zusätzlichen Wörter der zuletzt bereitgestellten Variablen zugewiesen:

read var1 var2
foo bar baz
echo $var1
echo $var2

Wenn es weniger Wörter als Variablen gibt, sind die restlichen Variablen leer.

Rohrleitung

Piping nimmt die Standardausgabe eines Befehls und parst sie als Standardeingabe für einen anderen Prozess. Verwenden Sie echo und leiten Sie die Informationen an read weiter zum sofortigen Parsen. Zum Beispiel:

echo "Hello world!" | (read var1 var2; echo $var1; echo $var2)

Die Klammern erstellen eine Subshell mit mehreren Befehlen, und die einzelnen Variablen werden auf der Konsole ausgegeben.

Heredoc

Eine andere Möglichkeit, Text in read einzugeben Der Befehl verwendet die Heredoc-Notation. Zum Beispiel:

read var1 var2 <<< "Hello world!"
echo $var1
echo $var2

Der read Der Befehl erwartet ein Eingabestromliteral und die Umleitungskennung (<<< ) gibt den Herestring ein.

Trennzeichen

Der read Der Befehl definiert zwei Arten von Trennzeichen:

1. Das Trennzeichen für den read Befehl.

Standardmäßig Enter drücken (newline) beendet den Befehl. Fügen Sie das -d hinzu -Tag und stellen Sie ein anderes Trennzeichen in Anführungszeichen bereit, um anders zu enden.

Zum Beispiel:

read -d "-"

Anstelle einer neuen Zeile ist das neue Trennzeichen ein Bindestrich (- ) anstelle einer neuen Zeile. Der Befehl bricht beim Erreichen des Trennzeichens ab, unabhängig von der Anzahl der Argumente. Die Antwort in $REPLY oder die bereitgestellte Variable speichert die Benutzereingabe ohne Bindestrich (- ).

2. Das Trennzeichen zum Teilen von Feldern.

Die Variable $IFS (Internal Field Separator) speichert die Wortbegrenzer. Der Standardwert, durch den Wörter getrennt werden, ist ein Leerzeichen " ". Legen Sie $IFS fest Variable auf einen anderen Wert, um dieses Verhalten zu steuern.

Um beispielsweise Wörter durch Bindestriche zu trennen, verwenden Sie:

IFS="-"
echo "Hello-world!" | (read var1 var2; echo $var1; echo $var2)

Fügen Sie verschiedene Trennzeichen hinzu, um Felder nach verschiedenen Werten aufzuteilen:

IFS="-_"
echo "Hello_world-!" | (read var1 var2 var3; echo $var1; echo $var2; echo $var3)

Das Trennzeichen ist ein Zeichen lang und $IFS nimmt jeden angegebenen Teiler einzeln.

Eingabeaufforderung

Verwenden Sie den Lesebefehl, um interaktive Eingabeaufforderungen zu erstellen. Fügen Sie -p hinzu -Tag und geben Sie den Eingabeaufforderungstext ein, zum Beispiel:

read -p "Enter your username: " username

Der Eingabeaufforderungstext wird gedruckt und erfordert eine Benutzereingabe. Der Text wird in der Variablen $username gespeichert .

echo Your username is $username.

Verwenden Sie das -p Option in Bash-Skripten, um mit der Erstellung von Eingabeaufforderungen zu arbeiten.

Benutzereingaben ausblenden

Der read Befehl bietet das -s -Tag, um die Eingabe vertraulicher Informationen zu verbergen. Ein häufiger Anwendungsfall ist die Kombination von -s mit dem -p -Tag, um eine Passwortabfrage zu erstellen.

Zum Beispiel:

read -p "Enter your password: "$'\n' -s password

Die Eingabe des Benutzers ist unsichtbar. Beim Wiederholen der Nachricht wird jedoch das Kennwort angezeigt:

echo $password

Seien Sie vorsichtig mit diesem Verhalten, wenn Sie read verwenden in Skripten, die zur Eingabe von Passwörtern auffordern.

Zeichenbegrenzung festlegen

Der Lesebefehl bietet zwei Möglichkeiten, die Zeichenanzahl für die Benutzereingabe zu begrenzen:

1. Verwenden Sie -n Option und geben Sie eine Zahl ein, um die Zeichenbegrenzung festzulegen. Zum Beispiel:

read -n 3

Drücken Sie Eingabe nach einem Zeichen, um den Befehl vor Erreichen der Zeichenbegrenzung zu beenden. Ohne Enter zu drücken , wird der Befehl nach drei Zeichen automatisch beendet.

2. Verwenden Sie das -N Option und geben Sie eine Zahl an, um die Zeichenbegrenzung festzulegen, während Sie das Trennzeichen ignorieren. Zum Beispiel:

read -N 3

Enter drücken beendet den Befehl nicht. Der Tastendruck zählt jedoch als Zeichen.

Zeitlimit festlegen

Legen Sie ein Zeitlimit für read fest um die für die Texteingabe benötigte Zeit zu begrenzen:

read -t 5

Der Befehl endet automatisch nach dem angegebenen Zeitlimit.

Arrays

Anstatt einzelne Variablen zum Speichern einer Zeichenfolge zu verwenden, fügen Sie -a hinzu Option zum Speichern der Eingabe in einem Array. Zum Beispiel:

read -a array <<< "Hello world!"

Rufen Sie die Array-Elemente ab mit:

echo ${array[0]}
echo ${array[1]}

Verwenden Sie alternativ eine for-Schleife, um das Array zu durchlaufen.

Escapezeichen und Backslashes

Der read Der Befehl ermöglicht das Aufteilen langer Eingaben in mehrere Zeilen mithilfe von Backslashes. Zum Beispiel:

read password prompt terminal output
Hello \
world\
!

Enter drücken nach dem umgekehrten Schrägstrich beendet den Befehl nicht und erwartet weitere Eingaben in der folgenden Zeile.

Um die Backslash-Interpretation zu ignorieren, fügen Sie das -r hinzu Möglichkeit:

read -r <<< "Hello\world!"; echo $REPLY

Verwenden Sie diese Option beim Analysieren von Dateipfaden und jeglichem Text, bei dem der umgekehrte Schrägstrich eine Bedeutung hat.


Linux
  1. So verwenden Sie den Linux-Befehl sed

  2. So verwenden Sie den Linux-Grep-Befehl

  3. So verwenden Sie den Verlaufsbefehl unter Linux

  4. Wie verwende ich den basename-Befehl?

  5. So verwenden Sie den id-Befehl unter Linux

So verwenden Sie den nmap-Befehl

So verwenden Sie den fd-Befehl auf einem Linux-System

Wie verwende ich den wget-Befehl unter Linux?

Wie verwende ich den xargs-Befehl unter Linux?

So verwenden Sie den RPM-Befehl unter Linux

So verwenden Sie den which-Befehl in Linux