4 hereDokument
kraeml edited this page 2023-10-01 19:24:16 +00:00

Here Dokument

cat > termine <<EOF
16.02 Geschenke besorgen
17.02 Geschenke einpacken
18.02 Party
EOF

Diese Bash-Zeilen erstellen eine Datei mit dem Namen "termine" und fügen die folgenden Zeilen in diese Datei ein:

  1. cat > termine: Dieser Befehl verwendet das cat-Kommando, um Text von der Standardeingabe zu lesen und in die Datei "termine" zu schreiben. Wenn die Datei bereits existiert, wird sie überschrieben.

  2. <<EOF: Dies ist ein sogenanntes "Here-Dokument" oder "Here-Document". Es ermöglicht das Einfügen mehrerer Zeilen Text in einen Befehl oder eine Datei, bis ein bestimmtes Schlüsselwort erreicht wird. In diesem Fall ist das Schlüsselwort "EOF" (End of File), und es markiert das Ende des einzufügenden Textes.

  3. Die Zeilen zwischen <<EOF und EOF sind der Text, der in die Datei "termine" eingefügt wird. In diesem Fall handelt es sich um drei Zeilen mit Terminen und Ereignissen:

    • "16.02 Geschenke besorgen"
    • "17.02 Geschenke einpacken"
    • "18.02 Party"

Nach Ausführung dieser Bash-Zeilen wird die Datei "termine" erstellt oder überschrieben und enthält diese Termine als Inhalt.

Übung mit Kommandosubstitution

Wird bei einem Hier-Dokument die Zeichenkette, die das Ende des Hier-Dokuments bezeichnet, ohne Anführungszeichen angegeben, so werden in den Zeilen des Hier-Dokuments Shellvariable ersetzt und Kommandosubstitution (mit ... oder $( ... ) ) vorgenommen. Steht die End-Zeichenkette allerdings in Anführungszeichen (egal ob einfachen oder doppelten), bleiben die Zeilen des Hier-Dokuments so, wie sie sind. Vergleichen Sie die Ausgabe von

cat <<EOF
Heutiges Datum: `date`
EOF
cat <<"EOF"
Heutiges Datum: `date`
EOF

Zu guter Letzt: Wird das Hier-Dokument nicht mit <<, sondern mit <<- eingeleitet, so werden alle Tabulatorzeichen am Anfang jeder Zeile des Hier-Dokuments entfernt. Dies macht es möglich, Hier-Dokumente in Shellskripten sinnvoll einzurücken.