转义 $ 插值在 heredoc



我有Heredoc:

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;

但也许存在更好的解决方案?

您可以使用分隔符将文本块插入到文件中,使其可能更容易阅读,例如:

#!/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

但是您仍然需要按照注释 (\$( 中的建议转义 $ 符号。

相关内容

  • 没有找到相关文章

最新更新