Linux

如何在 Makefile 中用 envsubst 替換變數?

  • June 1, 2020

我想在 Makefiles 中替換我的後綴模板中的變數。

.PHONY: replace clean
export DOMAIN ?= home.lan
replace:
  @echo $(DOMAIN)
  envsubst   < template > main.cf
  cat out.test

我的模板文件如下所示:

...snip..
$myorigin = ${DOMAIN}
$mydomain = $myorigin

執行 make 給我這樣的輸出,替換 $ {DOMAIN} variable, but also replacing $ mydomain 變數以及 $myorigin key :

= home.lan
=

過去使用 shell 腳本,我正在做這樣的事情:

VARS='$API_URL'
envsubst "$VARS" < /etc/nginx/template > /etc/nginx/sites-enabled/default

並且 $API_URL 被正確替換為 env 之一。如何使用 Makefile 做到這一點?

使用“$${DOMAIN}”

.PHONY: replace
export DOMAIN ?= home.lan
replace:
   envsubst '$${DOMAIN}' < template

跑:

make replace

輸出:

envsubst '${DOMAIN}' < template
...snip..
$myorigin = home.lan
$mydomain = $myorigin

引用自:https://unix.stackexchange.com/questions/587621