Я работаю с сценарием 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