Here Dokument in Bash

Fumbani Banda 30 Januar 2023
  1. Was ist Here Dokument in Bash
  2. Verwenden Sie Here Document, um eine mehrzeilige Zeichenfolge in eine Datei in Bash einzufügen
  3. Verwenden Sie das Here-Dokument, um Skripts interaktiv in Bash zu schreiben
  4. Verwenden Sie das Here-Dokument, um Daten an eine Funktion in Bash zu übergeben
  5. Deaktivieren Sie die Parameterersetzung im Here-Dokument in Bash
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
Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub