O que significa o -EOC?

1

Gostaria de saber o que significa o sinal de menos (-) e o EOC no comando abaixo. Eu sei que algumas linguagens como Perl permitem que você escolha qualquer combinação de caractere (não vinculada a EOF), mas é esse o caso aqui? E o menos é um completo mistério para mim. Obrigado antecipadamente!

ftp -v -n $SERVER  >> $LOG_FILE <<-EOC
            user $USERNAME $PWD
            binary
            cd $DIR1
            mkdir $dir_lock
            get $FILE
            bye
EOC
    
por Lee 23.04.2017 / 18:28

2 respostas

1

Esse é um documento aqui.

command <<-word
here-document contents
word

O word usado para delimitar o aqui-documento é arbitrário, é comum, mas não necessário, usar uma palavra em maiúsculas.

O - em <<-word tem o efeito de separar as guias do início de cada linha no conteúdo do documento here.

cat <<-SERVICE_ANNOUNCEMENT
    hello
    world
SERVICE_ANNOUNCEMENT

Se o documento aqui acima foi escrito com guias literais no início de cada linha, isso resultaria na saída

hello
world

em vez de

    hello
    world

As guias antes do delimitador final também são removidas com <<- (mas não sem o - ):

cat <<-SERVICE_ANNOUNCEMENT
    hello
    world
    SERVICE_ANNOUNCEMENT

(mesmo resultado)

    
por 23.04.2017 / 18:33
0

De man bash :

   If the redirection operator is <<-, then all leading tab characters are
   stripped  from  input  lines  and  the line containing delimiter.  This
   allows here-documents within shell scripts to be indented in a  natural
   fashion.
    
por 23.04.2017 / 18:32