Я пытаюсь использовать sed в make-файле, как показано ниже. Но он, похоже, не создает измененный файл. Я попробовал команду sed в оболочке и удостоверился, что она работает.Использование sed в makefile
ana:
-for ana1 in $(anas) ; do \
for ana2 in $(anas) ; do \
sed "s/STF1/$$ana1/g" ./planalysis/src/analysis.arr > ./planalysis/src/spanalysis.arr ; \
sed "s/STF2/$$ana2/g" ./planalysis/src/spanalysis.arr > ./planalysis/src/spanalysis.arr ; \
# ... perform some analysis with the modified file..
# ...
done \
done
Есть ли что-то, что я делаю неправильно?
Я думаю, что марка не может быть инструментом использовать для этого. Make используется для описания того, как преобразовать файл или файлы в выходной файл. Выход ana: явно не привязан к любым входным файлам. Простой сценарий bash должен отлично работать для этого. Если вы хотите включить make, чтобы указать, когда запускать скрипт bash, сделайте это, но не используйте make make для логики цикла. Make должен выглядеть следующим образом: ana зависит от x y и y. Существует так, как вы принимаете x y и z и делаете ana из них. –
Вы можете объединить две команды sed в одном: 'sed -e 's/STF1/$$ ana1/g" -e "s/STF2/$$ ana2/g" ./planalysis/src/analysis.arr> ./ planalysis/SRC/spanalysis.arr'. Это улучшит производительность и устранит проблему с перезаписью входного потока во втором вызове 'sed'. –