bash 기능 내에서 heredoc을 사용하는 방법은 무엇입니까?

bash 기능 내에서 heredoc을 사용하는 방법은 무엇입니까?

삽입이 가능한가요?heredocbash 기능 내부?

아래의 간단한 샘플에서는 오류가 발생합니다../heredoc_in_function.sh: 10: Syntax error: end of file unexpected (expecting "}")

#!/bin/sh

my_function () {
cat <<HEREDOC
heredoc contents
HEREDOC
}

my_function

환경:

  • 우분투 11.04(GNU/Linux 2.6.38-8-서버 x86_64)
  • GNU bash, 버전 4.2.8(1)-릴리스(x86_64-pc-linux-gnu)

답변1

귀하의 코드가 괜찮아 보였으므로 한 줄씩 복사했는데 다음과 같이 작동했습니다.

  • OSX 10.7, bash 3.2.48(1)-릴리스(x86_64-apple-darwin11).
  • Ubuntu 10.04.3, bash 4.1.5(1)-릴리스(x86_64-pc-linux-gnu)

공백/탭/등이 누락되거나 추가되지 않았는지 확인하기 위해 파일을 직접 다시 입력할 수 있습니까?

또한 어떻게 실행하고 있나요? 나는 한 chmod +x test.sh다음./test.sh

편집: HEREDOC을 닫고 줄 시작 부분에 공백을 추가했을 때와 동일한 오류가 발생했습니다.

추가 참고 사항: 닫는 부분 뒤의 공백으로 인해 HEREDOC이 문제가 발생할 수도 있습니다.

관련 정보