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 `.