У меня есть сценарий один строки передается в foreach
функции в Makefile, как показано ниже:Для цикла в Makefile не имеет никакого эффекта
flag:
$(foreach f, $*.txt, printf "%s\n" 0a "$(grep -o '[0-9]\+' $f | sed 's/.*/read \"&\"/')" "" . w q | ed $f)
Что этот скрипт делает линия может быть найдена here. Я просто озадачен, почему он не работает так, потому что если я поставил линию в отдельный сценарий и вызывать его из Makefile, как это:
flag:
$(forech f, $*.txt, ./script $f)
он работает отлично.
Я также попытался оболочки for
петлю следующим образом:
flag:
for f in $*.txt ; do \
printf "%s\n" 0a "$(grep -o '[0-9]\+' $f | sed 's/.*/read \"&\"/')" "" . w q | ed $f ; \
done
еще не повезло. Я должен коснуться некоторых тонких моментов Makefiles, может ли кто-нибудь просветить меня? Благодарю.
Я пробовал свой путь, удаляя '' 'перед' * .txt' и добавляя '$' перед двумя вхождениями переменной 'f', но он все равно не работает. – day
Опубликуйте свой новый код, чтобы Нейл мог его проверить. –
Я решил проблему, спасибо, что просветил меня, Нил. Это действительно недостающее '' 'вызвало проблему. – day