Here Dokument in Bash
- 
          
            Was ist HereDokument 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
