我想在 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