Na página bash(1)
man:
If any characters in word are quoted, the delimiter is the result of quote removal on word, and the lines in the here-document are not expanded.
cat > /etc/nginx/sites-available/default_php <<"END"
Estou trabalhando com um script bash tentando impedi-lo de tentar substituir variáveis dentro do meu heredoc. Como configurar um heredoc para A) escapar os nomes das variáveis ao invés de analisá-los ou B) retornar toda a string intocada?
cat > /etc/nginx/sites-available/default_php <<END
server {
listen 80 default;
server_name _;
root /var/www/$host; <--- $host is a problem child
}
END
Como é, quando eu terminar de injetá-lo em um arquivo, fico com isso:
server {
listen 80 default;
server_name _;
root /var/www/;
}
Apenas com uma barra invertida:
cat > /tmp/boeboe <<END
server {
listen 80 default;
server_name _;
root /var/www/\$host';
}
END