有什么方法可以创建替换 bash 中某些变量但不替换其他变量的此处文档吗?

有什么方法可以创建替换 bash 中某些变量但不替换其他变量的此处文档吗?

我想知道是否有任何方法可以在 bash 中创建一个此处文档以输出到脚本内的文件,问题是在这个配置文件中我试图输出一些以 $ 开头的变量我想替换,而其他变量我则这样做不是。

让我举例说明:

cat >> /opt/apache2/sites-available/$WEBSITENAME <<END-OF-FILE
 ServerName $WEBSITENAME #This I want to replace


<VirtualHost *:80>

 ServerName $WEBSITENAME # And this
 ServerAlias *.xxx.com

RedirectMatch /(.*) https://$WEBSITENAME/$1 # But not the $1 here

 CustomLog /var/log/apache2/access.log combined

</VirtualHost>

这是许多示例之一,我有许多其他配置文件,我想在其中替换变量,但它们本身也有许多自己的变量,所以我不想替换它们。

答案1

您可以转义$,强制 bash 将其视为文字字符而不是变量的开头。

您可以使用反斜杠 ( \) 字符来执行此操作。

所以用这个:

RedirectMatch /(.*) https://$WEBSITENAME/\$1

在此处的文档中。

相关内容