Bash 스크립트의 "예기치 않은 파일 끝"

Bash 스크립트의 "예기치 않은 파일 끝"

Bash 스크립트에 다음이 있는 경우:

if [ $ACTION = deploy ]; then
    ${JAVA_HOME}/bin/java ${JVM_ARGS} weblogic.WLST << EOJ
    connect('XXX','XXX','t3://XXX:8001')
    jndi();
    ls();
    disconnect();
    exit ();
    EOJ
else
    echo "XXX"
fi

EOJ에 오류가 있는 것 같습니다.

답변1

EOJ완전히 왼쪽 정렬되어야 합니다. 선행 공백과 후행 공백이 없습니다. 또는 (필요에 따라) 첫 번째 항목을 .로 작성할 수 있거나 작성해야 합니다 <<'EOJ'. 따옴표는 가능한 일부 쉘 확장을 비활성화합니다.

~에서info bash

Here Documents 이 유형의 리디렉션은 구분 기호만 포함된 줄(후행 공백 없음)이 나타날 때까지 현재 소스에서 입력을 읽도록 셸에 지시합니다. 이 지점까지 읽은 모든 행은 명령의 표준 입력으로 사용됩니다.

   The format of here-documents is:

          <<[-]word
                  here-document
          delimiter

   No  parameter expansion, command substitution, arithmetic expansion, or
   pathname expansion is performed on word.  If any characters in word are
   quoted,  the  delimiter is the result of quote removal on word, and the
   lines in the here-document are not expanded.  If word is unquoted,  all
   lines  of  the here-document are subjected to parameter expansion, com‐
   mand substitution, and arithmetic expansion.  In the latter  case,  the
   character  sequence  \<newline> is ignored, and \ must be used to quote
   the characters \, $, and `.

   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.

관련 정보