我有一个单行脚本传递给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
仍然没有运气。我必须触摸Makefile的一些细微之处,有人可以启发我吗?谢谢。
最佳答案
既太多又不够$符号!这列出了* .txt文件-注意$$ F:
all:
for F in *.txt ; do \
echo $$F ; done
关于shell - Makefile中的For循环无效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6236335/