다음 명령에서 빼기 기호(-)와 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.