Makefile에서 변수를 envsubst로 바꾸는 방법은 무엇입니까?

Makefile에서 변수를 envsubst로 바꾸는 방법은 무엇입니까?

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

관련 정보