shell - Makefile 中的 for 循环无效

标签 shell makefile sed grep ed

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

相关文章:

shell - 使用 .load 的 meteor shell

在Windows上编译C99兼容的.so

c - 尝试使用 C 使 LED 闪烁

linux - 如何在 sed 上替换字符串

regex - 按模式查找线条,仅保留模式但保留不匹配的线条

shell - 从所有行中删除最短的前导空格

linux - Bash 脚本 - 根据模板转换时间

shell - 在zsh中寻找ALT+LeftArrowKey解决方案

c++ - 在 shell 中为 make 设置 GCC 版本

linux - 使用 sed 插入一行