1

在 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; \

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

4

1 回答 1

2

只需添加一个额外的$

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

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

于 2012-04-17T23:59:33.523 回答