Ich würde gerne wissen, was das Minus (-) und das EOC im folgenden Befehl bedeuten. Ich weiß, dass Sie in einigen Sprachen wie Perl eine beliebige Kombination von Zeichen auswählen können (nicht an EOF gebunden), aber ist das hier der Fall? Und das Minus ist mir ein absolutes Rätsel. Vielen Dank im Voraus!
ftp -v -n $SERVER >> $LOG_FILE <<-EOC
user $USERNAME $PWD
binary
cd $DIR1
mkdir $dir_lock
get $FILE
bye
EOC
Akzeptierte Antwort:
Das ist ein Here-Dokument.
command <<-word
here-document contents
word
Das word
verwendet, um das Here-Dokument abzugrenzen, ist willkürlich, es ist üblich, aber nicht notwendig, ein Wort in Großbuchstaben zu verwenden.
Der -
in <<-word
bewirkt, dass im Inhalt des Hier-Dokuments die Tabulatoren am Anfang jeder Zeile entfernt werden.
cat <<-SERVICE_ANNOUNCEMENT
hello
world
SERVICE_ANNOUNCEMENT
Wenn das obige Here-Dokument mit wörtlichen Tabulatoren am Anfang jeder Zeile geschrieben wurde, würde dies zu der Ausgabe führen
hello
world
statt
hello
world
Tabulatoren vor dem Endetrennzeichen werden ebenfalls mit <<-
entfernt (aber nicht ohne den -
):
cat <<-SERVICE_ANNOUNCEMENT
hello
world
SERVICE_ANNOUNCEMENT
(gleiche Ausgabe)