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 は最初の を展開し、何もない$と解釈${し、物事はすぐに解明されます。では$$、1$番目が 2 番目をエスケープ${...}し、シェルに渡されます。

于 2012-04-17T23:59:33.523 に答える