如何在 Makefile 中用 envsubst 替换变量?

如何在 Makefile 中用 envsubst 替换变量?

我想在 Makefile 中替换后缀模板中的变量。

.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 key :

= home.lan
=

过去我用 shell 脚本做了这样的事情:

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

相关内容