Я все-таки ответил на все возможные ответы в SO, но все же я не могу заставить работать мой скрипт.Заменить переменную в sed внутри Makefile
У меня есть сценарий запроса в SPARQL с линией, которая должна заменить знак % вкладчик% по переменной между "<>"
?link dcterms:contributor %contributor%
В
?link dcterms:contributor <http://newurl>
Если я выполнить код в оболочке, замена выполнена правильно, и я вижу свой запрос с % вкладчиком% тег успешно заменен. Но когда выполняется внутри Makefile, даже с двойным $$ доллар, чтобы позволить расширение переменных, мне не удается это сделать.
for l in `cat sref.csv`; do \
QUERY=$$(cat queries/table_knowledge.rq | sed "[email protected]%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') ; \
Во-первых, "Я не удается сделать это" не является полезный отчет о проблеме. Что именно происходит? Что делает печать? Вы видите кучу пустых строк? Нет выхода? Удалите/вставьте результаты. Ваша первая версия выглядит правильно для меня (вторая или третья версии не могут работать, потому что вы используете '' 'quoting, и вы используете ссылки на переменные, но вы пытаетесь получить доступ к переменным оболочки. Если вы все еще застряли, я рекомендую добавить 'set -x;' перед 'for l ...', чтобы оболочка печатала команды, которые она пытается вызвать. – MadScientist