![bash의 일부 변수는 대체하고 다른 변수는 대체하지 않는 문서를 만드는 방법이 있습니까?](https://linux55.com/image/85124/bash%EC%9D%98%20%EC%9D%BC%EB%B6%80%20%EB%B3%80%EC%88%98%EB%8A%94%20%EB%8C%80%EC%B2%B4%ED%95%98%EA%B3%A0%20%EB%8B%A4%EB%A5%B8%20%EB%B3%80%EC%88%98%EB%8A%94%20%EB%8C%80%EC%B2%B4%ED%95%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EB%AC%B8%EC%84%9C%EB%A5%BC%20%EB%A7%8C%EB%93%9C%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%B4%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
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
여기 문서에 있습니다.