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)