![Makefile에서 변수를 envsubst로 바꾸는 방법은 무엇입니까?](https://linux55.com/image/173519/Makefile%EC%97%90%EC%84%9C%20%EB%B3%80%EC%88%98%EB%A5%BC%20envsubst%EB%A1%9C%20%EB%B0%94%EA%BE%B8%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
Makefile의 postfix 템플릿에 있는 변수를 바꾸고 싶습니다.
.PHONY: replace clean
export DOMAIN ?= home.lan
replace:
@echo $(DOMAIN)
envsubst < template > main.cf
cat out.test
내 템플릿 파일은 다음과 같습니다.
...snip..
$myorigin = ${DOMAIN}
$mydomain = $myorigin
make를 실행하면 ${DOMAIN} 변수를 바꾸고 $mydomain 변수와 $myorigin 키도 바꾸는 다음 출력이 제공됩니다.
= home.lan
=
과거에는 쉘 스크립트를 사용하여 다음과 같은 작업을 수행했습니다.
VARS='$API_URL'
envsubst "$VARS" < /etc/nginx/template > /etc/nginx/sites-enabled/default
그리고 $API_URL은 env 1로 올바르게 대체됩니다. 이 작업을 수행하려면 Makefile을 어떻게 사용합니까?
답변1
"$${DOMAIN}" 사용
.PHONY: replace
export DOMAIN ?= home.lan
replace:
envsubst '$${DOMAIN}' < template
달리기:
make replace
산출:
envsubst '${DOMAIN}' < template
...snip..
$myorigin = home.lan
$mydomain = $myorigin