EOF를 사용하여 백슬래시와 개행 문자를 보존하세요.

EOF를 사용하여 백슬래시와 개행 문자를 보존하세요.

EOF다음과 같은 파일을 만들고 있습니다.

cat <<EOF > Dockerfile
RUN apt-get update -y \
  && apt-get install -y \
    bsdtar \
    git \
    locales
EOF

그러나 결과는 다음과 같습니다.

RUN apt-get update -y   && apt-get install -y     bsdtar     git     locales

백슬래시와 줄바꿈을 유지하고 싶습니다.

답변1

EOF 토큰을 인용해야 합니다.

cat <<"EOF" > Dockerfile
RUN apt-get update -y \
  && apt-get install -y \
    bsdtar \
    git \
    locales
EOF

변수도 확장하려면 백슬래시를 이스케이프 처리하고 따옴표를 사용하지 않아야 합니다.

해당되는 부분입니다 man bash.

      [n]<<[-]word
              here-document
      delimiter

   No  parameter  and variable expansion, command substitution, arithmetic
   expansion, or pathname expansion is performed on word.  If any part  of
   word  is  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, command substitution, and arithmetic expansion, the  charac‐
   ter  sequence  \<newline>  is  ignored, and \ must be used to quote the
   characters \, $, and `.

관련 정보