我已经通过所有可能的答案了,但是我仍然无法使我的脚本工作。
我在SPARQL中有一个查询脚本,其行需要用"<>"之间的变量替换标记%贡献者%
?link dcterms:contributor %contributor%
进入
?link dcterms:contributor <http://newurl>
如果我在外壳中执行代码,则可以正确完成替换,并且我看到了我的查询,并使用%贡献者%标签成功替换。但是,即使使用Double $$ 美元,也可以在makefile内部执行时,以允许扩展变量我无法完成。
for l in `cat sref.csv`; do
QUERY=$$(cat queries/table_knowledge.rq | sed "s@%contributor%@<$$l>@g") ;
echo $$QUERY ;
done
也喜欢这样做:
QUERY=$$(cat queries/table_knowledge.rq | sed 's/%contributor%/<$(l)>/g') ;
或
QUERY=$$(cat queries/table_knowledge.rq | sed 's/%contributor%/<${l}>/g') ;
使用双引号,以便SED扩展变量。
使用与/
不同的分离器,因为替换包含/
QUERY=$(cat queries/table_knowledge.rq | sed "s|%contributor%|<${l}>|g") ;
测试:
$ test="http://test.com"
$ echo "?link dcterms:contributor %contributor%" > source.file
$ x=$(cat source.file|sed "s|%contributor%|<${test}>|g")
$ echo $x
?link dcterms:contributor <http://test.com>