Im folgenden Befehl nimmt cat den Inhalt von here-doc und leitet ihn in die Datei conf um:
cat > conf << EOF
var1="cat"
var2="dog"
var3="hamster"
EOF
Wie kann man hier die Reihenfolge der Befehle verstehen? Gibt es bash
erste Verfahren alles andere (hier-doc Teil) und als letzten Schritt den aussieht > conf
Teil?
quelle
cat > file_name << blah
dass vor der Ausführungcat
die stdout der Shell mit der Datei named verbunden wirdfile_name
und dann die stdin der Shell mit here-doc verbunden wird ?open
wurde vor gerufendup2
.Nun, lassen Sie uns herausfinden:
Dang. Ich denke, es muss dann zuerst den
>"$file"
Teil erledigen. Aber was wenn...?...kein Fehler...?
Wie es scheint, ist die Reihenfolge wichtig.
quelle
Wenn
bash
der auszuführende Prozess erstellt wirdcat
, wird erconf
zum Schreiben in Dateideskriptor 1 geöffnet, und zuvor wird eine temporäre Datei (für das Here-Dokument) zum Lesen in Dateideskriptor 0 geöffnetexec
das Programm gestartet wird. In diesem Fall spielt es keine Rolle, in welcher Reihenfolge diese Aktionen ausgeführt werden.Die Reihenfolge wird wichtig, wenn Dateideskriptoren neu zugewiesen werden, z
2>&1
. B. mit .quelle