Назад | Перейти на главную страницу

Как избежать персонажей в heredoc?

Я работаю с сценарием bash, пытаясь остановить его от попытки заменить переменные внутри моего heredoc. Как установить в 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) страница руководства:

Если в слово цитируются, разделитель является результатом удаления цитаты на слово, и строки в этом документе не расширяются.

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

Просто с обратной косой чертой:

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