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



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

我有这个代码:

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

但是,代码失败了,因为$$i没有在设置git_url的"shell"行中展开。

如何在设置git_url的"shell"行中插入变量$I?

您混淆了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

最新更新