Mi piacerebbe sapere cosa significano il meno (-) e l'EOC nel comando seguente. So che alcuni linguaggi come Perl ti consentono di scegliere qualsiasi combinazione di caratteri (non vincolati a EOF), ma è così qui? E il meno è un completo mistero per me. Grazie in anticipo!
ftp -v -n $SERVER >> $LOG_FILE <<-EOC
user $USERNAME $PWD
binary
cd $DIR1
mkdir $dir_lock
get $FILE
bye
EOC
Risposta accettata:
Questo è un qui-documento.
command <<-word
here-document contents
word
La word
usato per delimitare il here-document è arbitrario, è comune, ma non necessario, usare una parola maiuscola.
Il -
in <<-word
ha l'effetto che le schede verranno rimosse dall'inizio di ogni riga nel contenuto del here-document.
cat <<-SERVICE_ANNOUNCEMENT
hello
world
SERVICE_ANNOUNCEMENT
Se il documento qui sopra è stato scritto con schede letterali all'inizio di ogni riga, risulterebbe nell'output
hello
world
piuttosto che
hello
world
Anche le schede prima del delimitatore finale vengono eliminate con <<-
(ma non senza il -
):
cat <<-SERVICE_ANNOUNCEMENT
hello
world
SERVICE_ANNOUNCEMENT
(stesso output)