Here Dokument in Bash
-
Was ist
Here
Dokument in Bash - Verwenden Sie Here Document, um eine mehrzeilige Zeichenfolge in eine Datei in Bash einzufügen
- Verwenden Sie das Here-Dokument, um Skripts interaktiv in Bash zu schreiben
- Verwenden Sie das Here-Dokument, um Daten an eine Funktion in Bash zu übergeben
- Deaktivieren Sie die Parameterersetzung im Here-Dokument in Bash
Dieses Tutorial erklärt, was das Here-Dokument ist und wie es zum Schreiben einer mehrzeiligen Zeichenfolge in eine Datei, zum interaktiven Schreiben von Bash-Skripten, zur Verwendung mit Funktionen und zum Deaktivieren der Parameterersetzung verwendet wird.
Was ist Here
Dokument in Bash
Heredoc ist die Abkürzung für Here-Dokument. Heredoc verwendet ein interaktives Programm, um Eingaben für einen Befehl bereitzustellen. Das Heredoc verwendet Here Tag
, um das Ende der Eingabe eines Befehls anzuzeigen.
Das erste Here Tag
definiert das Here Tag
, das das Ende der Eingabe anzeigt. Die für dieses Dokument verwendete Notation ist unten dargestellt.
command <<Here Tag
>command1
>command2
>command3
>Here Tag
Dem ersten Here Tag
ist das Symbol <<
vorangestellt. Dieses Symbol leitet die interaktive Eingabe für das hier Dokument
auf Befehl
als Standardeingabe zur weiteren Verarbeitung.
Achten Sie beim Definieren eines Here Tag
darauf, dass dieser nicht in der Befehlsliste erscheint, um Verwirrung zu vermeiden.
Verwenden Sie Here Document, um eine mehrzeilige Zeichenfolge in eine Datei in Bash einzufügen
Wir verwenden das Here-Dokument und den Befehl cat
, um interaktiv einen mehrzeiligen String in eine Textdatei einzugeben. Das EOF
nach dem <<
-Symbol definiert den Here Tag
für das Here-Dokument.
Das bedeutet, dass wir eine mehrzeilige Zeichenfolge in die interaktive Shell eingeben, bis die Shell das Here Tag
, in unserem Fall EOF
, sieht. Der Ausgabeumleitungsoperator >
wird verwendet, um die Standardausgabe des cat
-Befehls in die angegebene Datei zu leiten, in diesem Fall output.txt
.
cat <<EOF > output.txt
> Hello user.
> Welcome to DelftStack.
> Hope you enjoy your stay.
> EOF
Unter Verwendung des Symbols >>
hängt der Umleitungsoperator die Ausgabe des Befehls cat
an die angegebene Datei an, während das Symbol >
eine neue Datei erstellt und, falls die Datei bereits existiert, den Inhalt neu schreibt der Datei.
Verwenden Sie das Here-Dokument, um Skripts interaktiv in Bash zu schreiben
Wir verwenden das Here-Dokument und den Befehl cat
, um ein Bash-Skript interaktiv zu schreiben und die Ausgabe auf ein Bash-Skript umzuleiten. Wir definieren den Here Tag
nach dem <<
Symbol und begrenzen das Ende der interaktiven Eingabe mit dem Here Tag
.
Das Here Tag
im folgenden Skript ist EOF
. Wir verwenden den Ausgabeumleitungsoperator >
, um die Ausgabe an das Bash-Skript echo.sh
umzuleiten.
cat <<EOF > echo.sh
> #!/bin/bash
>
> echo "Hello World!"
> echo "Welcome to DelftStack."
> EOF
Mit dem Befehl cat
prüfen wir den Inhalt des Skripts echo.sh
.
cat echo.sh
Wir haben das Bash-Skript erfolgreich mit dem here-Dokument aus der Ausgabe unten geschrieben.
#!/bin/bash
echo "Hello World!"
echo "Welcome to DelftStack."
Verwenden Sie das Here-Dokument, um Daten an eine Funktion in Bash zu übergeben
Das folgende Skript liest die Eingabe aus dem Here-Dokument. Wir haben im Skript eine Funktion namens GetPersonalInfo
definiert. Die Funktion verfügt über Befehle, die Eingabedaten lesen.
Wir haben das Here-Dokument verwendet, um die Eingabedaten an die Funktion zu übergeben, und die echo
-Befehle verwendet, um die Daten an der Standardausgabe anzuzeigen. Auf die innerhalb der Funktion definierten Variablen wird außerhalb der Funktion zugegriffen, da Variablen in Bash standardmäßig global sind, es sei denn, das Schlüsselwort local
hat sie definiert.
#!/bin/bash
GetPersonalInfo(){
read fname
read lname
read country
}
GetPersonalInfo <<EOF
John
Doe
USA
EOF
echo "Personal Information"
echo
echo "First Name: $fname"
echo "Last name: $lname"
echo "Country of Residence: $country"
Das Ausführen des Bash-Skripts erzeugt die folgende Ausgabe.
Personal Information
First Name: John
Last name: Doe
Country of Residence: USA
Deaktivieren Sie die Parameterersetzung im Here-Dokument in Bash
Wir generieren ein neues Skript aus dem vorhandenen Skript, indem wir das Here-Dokument im folgenden Skript verwenden. Das Here Tag
, EOF
, wurde in einfache Anführungszeichen gesetzt, um eine Parameterersetzung innerhalb des Here-Dokuments zu vermeiden.
Das Zitieren des ersten Here-Tags
weist das Here-Dokument an, die wörtliche Bedeutung von Sonderzeichen innerhalb des Here-Dokuments beizubehalten.
#!/bin/bash
echo "This script generates another script."
cat <<'EOF' > add.sh
#!/bin/bash
x=10
y=11
let "sum = $x + $y"
echo "Total of $x and $y is $sum"
EOF
Wir haben den Befehl cat
verwendet, um den Inhalt des neu generierten Skripts add.sh
zu überprüfen.
#!/bin/bash
x=10
y=11
let "sum = $x + $y"
echo "Total of $x and $y is $sum"
Das Ausführen des neu generierten Skripts erzeugt die folgende Ausgabe an das Terminal.
Total of 10 and 11 is 21