在Makefile中的命令替换中插值变量

时间:2018-11-13 00:26:06

标签: makefile

我正在尝试在Makefile中的命令替换内进行变量插值。

我有此代码:

{"extension_message_name":"This is a test"}

但是,代码失败了,因为setup: mkdir -p data_all ; \ for i in $(shell jq -r 'keys | @tsv' assets.json) ; do \ git_url=$(shell jq -r ".$$i" assets.json) ; \ git clone $$git_url data_all/$$i ; \ done 不在设置git_url的“ shell”行中扩展。

如何在设置git_url的“ shell”行中插入变量$ i?

1 个答案:

答案 0 :(得分:1)

您混合了make函数($(shell ...))和真正的shell构造。编写配方时,最简单的方法是先在普通外壳中编写它:

mkdir -p data_all ; \
for i in $( jq -r 'keys | @tsv' assets.json ) ; do \
    git_url=$( jq -r ".$i" assets.json ) ; \
    git clone $git_url data_all/$i ; \
done

然后通过make转义不必要的$扩展名:

mkdir -p data_all ; \
for i in $$( jq -r 'keys | @tsv' assets.json ) ; do \
    git_url=$$( jq -r ".$$i" assets.json ) ; \
    git clone $$git_url data_all/$$i ; \
done