히어 도큐먼트

위키백과, 우리 모두의 백과사전.

컴퓨팅에서 히어 도큐먼트(here document, here-document), 히어 텍스트(here-text), 히어독(heredoc), 히어이즈(hereis), 히어 스트링(here-string), 히어 스크립트(here-script)는 파일 리터럴 또는 스트림 리터럴이다. 마치 별도의 파일인 것처럼 취급하는 소스 코드의 한 부분이다. 이 용어는 비슷한 문법을 사용하는 여러 줄의 스트링 리터럴을 구성하기 위해서도 사용되며 텍스트 안의 줄 바꾸기와 기타 공백(들여쓰기 포함)을 보존한다.

히어 도큐먼트는 유닉스 셸에서 기원하였으며,[1] sh, csh,[2] Tcsh,[3] ksh, bash, zsh 등에서 볼 수 있다. 히어 도큐먼트 스타일의 스트링 리터럴은 다양한 고급 프로그래밍 언어, 특히 펄 프로그래밍 언어(유닉스 셸의 영향을 받은 문법)와 펄에 영향을 받은 언어(예: PHP, 루비)에서 볼 수 있다. 파이썬, Tcl 등의 그 밖의 고급 언어들은 다중 라인 스트링을 위한 다른 기능을 제공한다.

히어 도큐먼트는 파일 또는 문자열로 취급이 가능하다. 일부 셸은 이것들을 Printf 리터럴로 취급하며 이로써 리터럴 내에서 변수 치환명령어 치환을 가능케 한다.

유닉스 셸에서 기원한 가장 일반적인 히어 도큐먼트 문법은 <<와 그 뒤에 붙는 구분 문자 식별자(종종 EOF 또는 END[4]), 그리고 다음 줄에 인용 텍스트가 시작되며 인용 텍스트를 닫을 때에는 똑같은 구분 문자 식별자가 위치하게 된다. 이러한 문법은 히어 도큐먼트가 스트림 리터럴임을 의미하며 문서의 내용은 선행 명령dml stdin(표준 스트림)으로 리다이렉트된다. 히어 도큐먼트 문법은 "다음 파일로부터 입력을 받는" <인 입력 리다이렉션 문법과 유사하다.

다른 언어들은 종종 비슷한 문법을 사용하지만 문법과 실제 기능의 세부 사항은 상당히 다를 수 있다. 단순히 스트링 리터럴을 사용할 때 <<는 인다이렉션(indirection)을 지시하지 않고 시작 구분자를 의미할 수 있다. 루비 등 일부 언어에서 <<는 입력 리다이렉션을 위해 사용되므로 히어 도큐먼트 스트링 리터럴로부터 리다이렉트하고 싶으면 <<를 두 번 사용해야 한다.

파일 리터럴[편집]

히어 도큐먼트는 파일 리터럴 또는 스트림 리터럴이다. 이는 유닉스 셸에서 기원한 것이지만 비슷한 기능을 다른 일부 언어에서 사용할 수 있다.

유닉스 셸[편집]

히어 도큐먼트는 수많은 유닉스 셸에서 사용할 수 있다.[1] 다음의 예에서 텍스트는 히어 도큐먼트를 사용하여 tr(소문자를 대문자로 변환) 명령어로 전달된다. 셸 파일일 수도 있고 프롬프트에서 직접 상호작용적으로 입력해도 된다.

$ tr a-z A-Z << END_TEXT
> one two three
> four five six
> END_TEXT
ONE TWO THREE
FOUR FIVE SIX

END_TEXT가 구분 식별자로 사용되었다. 이는 히더 도큐먼트의 시작과 끝을 규정한다. 리다이렉트와 구분 식별자는 공백으로 분리시킬 필요가 없다:<<END_TEXT 또는 << END_TEXT 모두 동일하게 잘 동작한다.

같이 보기[편집]

참고 문헌 및 각주[편집]

  1. “Here-Document description in the POSIX/SUS standard”. 2014년 4월 27일에 원본 문서에서 보존된 문서. 2019년 8월 31일에 확인함. 
  2. “Here document - Rosetta Code”. 《rosettacode.org》 (영어). 2017년 2월 20일에 확인함. 
  3. “Darwin tcsh man page”. 2019년 7월 1일에 원본 문서에서 보존된 문서. 2019년 8월 31일에 확인함. 
  4. Wayne Pollock. “Shell Here Document Overview”. hccfl.edu. 2014년 5월 29일에 원본 문서에서 보존된 문서. 2014년 5월 28일에 확인함. 

일반[편집]

외부 링크[편집]