【问题标题】:Processing list in MakefileMakefile 中的处理列表
【发布时间】:2012-04-17 23:30:25
【问题描述】:

在 bash 中,当我想迭代 pdf 文件的递归列表时,没有扩展名,我可以执行以下操作:

for file in `find mypath -type f -name '*.pdf' -printf "%f\n"`
do
    echo "${file%.*}"
done

这很好用,我得到一个没有扩展名的 pdf 文件列表。

但如果我尝试在 Makefile 中做同样的事情,我会得到空输出:

my_test:
    @for file in `find mypath -type f -name '*.pdf' -printf "%f\n"`; \
    do \
        echo "${file%.*}"; \
    done; \

你知道为什么会这样吗? 提前谢谢

【问题讨论】:

    标签: bash makefile gnu-make


    【解决方案1】:

    多加一个$:

    echo "$${file%.*}"; \
    

    在您的命令中,Make 扩展了第一个 $,将 ${ 解释为空,然后事情很快就解开了。使用$$,第一个$ 转义第二个${...} 传递给shell。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-27
      • 2015-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多