bashでhereドキュメントを生成してスクリプト内のファイルに出力する方法があるかどうか疑問に思います。問題は、この設定ファイルで$で始まるいくつかの変数を出力しようとしていることです。私が持っている他の変数はそうではありません。
たとえば、説明します。
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つです。
答え1
Escapeを$
使用すると、bashに変数の先頭ではなくリテラル文字として扱うことができます。
\
これを行うには、バックスラッシュ()文字を使用できます。
したがって、以下を使用してください。
RedirectMatch /(.*) https://$WEBSITENAME/\$1
ここのドキュメントにあります。