我有一个单行脚本传递给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/

10-12 17:35
查看更多