heredoc에서 캐릭터를 어떻게 탈출합니까? 80 default; server_name

heredoc 내부의 변수를 바꾸지 않으려는 bash 스크립트로 작업하고 있습니다. heredoc을 A) 변수 이름을 구문 분석하는 대신 이스케이프 처리하거나 B) 전체 문자열을 그대로 유지하려면 어떻게 설정합니까?

cat > /etc/nginx/sites-available/default_php <<END
server {
    listen 80 default;
    server_name _;
    root /var/www/$host; <--- $host is a problem child
}
END

그대로 파일에 주입을 마치면 다음과 같이 남습니다.

server {
    listen 80 default;
    server_name _;
    root /var/www/;
}



답변

로부터 bash(1)매뉴얼 페이지

단어의 문자 가 따옴표로 묶이면 구분 기호word 에서 따옴표를 제거한 결과이며 여기 문서의 줄은 확장되지 않습니다.

cat > /etc/nginx/sites-available/default_php <<"END"


답변

백 슬래시와 함께 :

cat > /tmp/boeboe <<END
server {
    listen 80 default;
    server_name _;
    root /var/www/\$host';
}
END


답변