Me gustaría saber qué significa el signo menos (-) y el EOC en el siguiente comando. Sé que algunos lenguajes como Perl le permiten elegir cualquier combinación de caracteres (no vinculado a EOF), pero ¿es ese el caso aquí? Y el menos es un completo misterio para mí. ¡Gracias de antemano!
ftp -v -n $SERVER >> $LOG_FILE <<-EOC
user $USERNAME $PWD
binary
cd $DIR1
mkdir $dir_lock
get $FILE
bye
EOC
Respuesta aceptada:
Ese es un documento aquí.
command <<-word
here-document contents
word
La word
usado para delimitar el documento aquí es arbitrario, es común, pero no necesario, usar una palabra en mayúsculas.
El -
en <<-word
tiene el efecto de que se eliminarán las pestañas desde el principio de cada línea en el contenido del documento aquí.
cat <<-SERVICE_ANNOUNCEMENT
hello
world
SERVICE_ANNOUNCEMENT
Si el documento aquí anterior se escribió con tabulaciones literales al comienzo de cada línea, daría como resultado la salida
hello
world
en lugar de
hello
world
Las pestañas antes del delimitador final también se eliminan con <<-
(pero no sin el -
):
cat <<-SERVICE_ANNOUNCEMENT
hello
world
SERVICE_ANNOUNCEMENT
(misma salida)