bash의 일부 변수는 대체하고 다른 변수는 대체하지 않는 문서를 만드는 방법이 있습니까?

bash의 일부 변수는 대체하고 다른 변수는 대체하지 않는 문서를 만드는 방법이 있습니까?

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

Escape 를 $사용하면 bash가 이를 변수의 시작 부분이 아닌 리터럴 문자로 처리하도록 할 수 있습니다.

\이를 수행하려면 백슬래시( ) 문자를 사용할 수 있습니다 .

따라서 다음을 사용하십시오.

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

여기 문서에 있습니다.

관련 정보