Предположим, я определил файл json:
foo.json
:
{"key":"${VALUE}"}
makefile:
export VALUE=bar
SHELL=/usr/bin/env bash
foo=$(shell cat foo.json)
bar:
@echo "$(foo)"
Вопрос заключается в следующем: как расширить переменную ${VALUE}
путем подстановки переменных make или подстановки echo
BASH, чтобы двойные кавычки в действительном файле JSON сохранялись в OUTPUT (да, make сохраняет их, и да, echo $(foo)
также оценивает переменные - но отбрасывает двойные кавычки - и да, мне все равно, что переводятся строки)?
Что касается причин все, предположим, у меня есть подпрограмма, которая ожидает выразительный файл JSON, который соответствует языку (а не конфигурации), и я использую Make для управления системой:
.PHONY: generator
# in the language of control theory
generator: $(foreach q,${Qm},.Qmarked-startup-$q)
application $@ -i <(pseudo code: {envsubst $@.json})
.Qmarked-startup-%: $(pseudo code: q0 dependencies ... )
# $* here is a verb
application $* -i <(pseudo code: {envsubst $*.json})