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

関連情報