我正在使用下面的示例Makefile根据VAR值打印SCRIPT_BODY:
define SCRIPT_BODY
begin
foo=$(VAR)
end
endef
export SCRIPT_BODY
.PHONY: all
all:
$(MAKE) body VAR='$$bar'
.PHONY: body
body:
@echo "$$SCRIPT_BODY"
问题是我得到以下输出
begin
foo=ar
end
而不是
begin
foo=$bar
end
有关如何打印美元符号的任何想法?
答案 0 :(得分:1)
该问题与SCRIPT_BODY
是一个多行变量无关:您使用SCRIPT_BODY=foo=$(VAR)
获得相同的结果。事实上,$$bar
会对make
进行两次评估:一次分配VAR
,一次分配SCRIPT_BODY
,然后再将其导出到shell。第一次评估会导致$bar
,因此第二次评估会导致ar
,因为b
不是Makefile
的变量。您可以使用make:
define SCRIPT_BODY
begin
foo=$(value VAR)
end
endef