У меня есть наследник:
user_data = <<-USERDATA
#!/bin/bash
echo "server {" >> /etc/nginx/sites-available/site
echo " listen 80;" >> /etc/nginx/sites-available/site
echo " location / {" >> /etc/nginx/sites-available/site
echo " proxy_set_header X-Forwarded-For $remote_addr;" >> /etc/nginx/sites-available/site
echo " proxy_set_header Host $http_host;" >> /etc/nginx/sites-available/site
echo " }" >> /etc/nginx/sites-available/site
echo "}" >> /etc/nginx/sites-available/site
-USERDATA
Теперь $remote_addr; и $http_host; не должны интерполироваться, но они пустые, когда я получаю вывод.
Я пробовал использовать $$remote_addr; но это также возвращает пустой результат вместо строки $remote_addr;
Может ли кто-нибудь увидеть, что я делаю неправильно в отношении экранирования символа $?
Обходной путь
Используя интерполяцию терраформ, я смог визуализировать строку ${"$remote_addr;"}, которая возвращает $ remote_addr;
Но, может быть, существует более приятное решение?
<<-BLAH (или любой его символ (-а)) PS: похоже, что у вас нет ведущих вкладок, поэтому вам действительно не нужно, чтобы - и не должен были на фактическом разделителе (в конце)





Вы можете использовать разделители для вставки фрагментов текста в файл, что, возможно, немного облегчит его чтение, например:
#!/bin/bash
cat <<EOM >/etc/nginx/sites-available/site
server {
listen 80;
location / {
proxy_set_header X-Forwarded-For \$remote_addr;
proxy_set_header Host \$http_host;
}
}
EOM
но вам все равно нужно избегать знаков $, как это предлагается в комментариях (\ $).
Экранирующий символ - обратная косая черта ...
\$remote_addr.