我有一个单行脚本传递给 Makefile 中的 foreach
函数,如下所示:
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)
它工作正常。
我还尝试了 shell 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:
all:
for F in *.txt ; do \
echo $$F ; done
关于shell - Makefile 中的 for 循环无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6236335/