<<-EOC가 무슨 뜻인가요?

<<-EOC가 무슨 뜻인가요?

다음 명령에서 빼기 기호(-)와 EOC가 무엇을 의미하는지 알고 싶습니다. Perl과 같은 일부 언어에서는 문자 조합(EOF에 연결되지 않음)을 선택할 수 있다는 것을 알고 있지만 여기서도 그럴까요? 빼기 기호는 나에게 완전한 미스터리입니다. 미리 감사드립니다!

ftp -v -n $SERVER  >> $LOG_FILE <<-EOC
            user $USERNAME $PWD
            binary
            cd $DIR1
            mkdir $dir_lock
            get $FILE
            bye
EOC

답변1

여기에 문서 리디렉션이 있습니다.

command <<-word
here-document contents
word

여기서 문서를 분리 하는 데 사용되는 것은 word임의적입니다. 단어를 대문자로 쓰는 것이 일반적이지만 필수는 아닙니다.

여기서는 문서 내용의 각 줄 시작 부분에서 탭 문자를 제거 -합니다 .<<-word

cat <<-SERVICE_ANNOUNCEMENT
    hello
    world
SERVICE_ANNOUNCEMENT

위의 여기 문서가 각 줄의 시작 부분에 리터럴 탭으로 작성된 경우 출력은 다음과 같습니다.

hello
world

대신에

    hello
    world

닫는 구분 기호 앞의 탭 문자도 제거됩니다 <<-(그러나 없이는 제거되지 않음 -).

cat <<-SERVICE_ANNOUNCEMENT
    hello
    world
    SERVICE_ANNOUNCEMENT

(동일한 출력)

답변2

에서 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.

관련 정보