wake-up-neo.com

Was macht << EOF?

Ich bin ein Neuling in Linux Admin. Während ich GDB lerne, um meinen Code zu debuggen, muss ich eine input.txt-Datei erstellen, die von meinem Programm gelesen werden kann. Ich kenne Umleitungssymbole wie >, >> and <, konnte jedoch bei Google keine Informationen zu << finden, da Google diese ignoriert. Könnte jemand erklären, was <<EOF unten macht? Vielen Dank.

cat >input.txt <<EOF
8
LED Fantom

Ein Auszug aus dem Artikel :

Hier Dokument

Ein Here-Dokument wird verwendet, um Eingaben in ein interaktives Shell-Skript oder -Programm umzuleiten.

Wir können ein interaktives Programm innerhalb eines Shell-Skripts ohne Benutzeraktion ausführen, indem wir die erforderlichen Eingaben für das interaktive Programm oder das interaktive Shell-Skript bereitstellen.

Die allgemeine Form für ein Here-Dokument lautet:

befehl << Trennzeichen Dokument Trennzeichen Hier interpretiert die Shell den Operator << als Anweisung zum Lesen von Eingaben, bis eine Zeile mit dem angegebenen Trennzeichen gefunden wird. Alle Eingabezeilen bis zur Zeile mit dem Begrenzer werden dann in die Standardeingabe des Befehls eingespeist.

Das Trennzeichen teilt der Shell mit, dass das Dokument hier fertiggestellt wurde. Ohne sie liest die Shell weiterhin Eingaben für immer. Das Trennzeichen muss ein einzelnes Wort sein, das keine Leerzeichen oder Tabulatoren enthält.

Es folgt die Eingabe für den Befehl wc -l, um die Gesamtanzahl der Zeilen zu zählen.

$wc -l << EOF
    This is a simple lookup program 
    for good (and bad) restaurants
    in Cape Town.
EOF
3
$

Sie können dieses Dokument verwenden, um mehrere Zeilen mit Ihrem Skript wie folgt zu drucken:

#!/bin/sh

cat << EOF
This is a simple lookup program 
for good (and bad) restaurants
in Cape Town.
EOF 

Dies würde folgendes Ergebnis erzeugen -

Dies ist ein einfaches Suchprogramm für gute (und schlechte) Restaurants in Kapstadt. Das folgende Skript führt eine Sitzung mit dem Texteditor vi aus und speichert die Eingabe in der Datei test.txt.

#!/bin/sh

filename=test.txt
vi $filename <<EndOfCommands
i
This file was created automatically from
a Shell script
^[
ZZ
EndOfCommands

Wenn Sie dieses Skript mit vim als vi ausführen, wird wahrscheinlich die folgende Ausgabe angezeigt:

$ sh test.sh
Vim: Warning: Input is not from a terminal
$

Nach dem Ausführen des Skripts sollte Folgendes zur Datei test.txt hinzugefügt werden:

$ cat test.txt
This file was created automatically from
a Shell script
$
8
user373230