foreach
以下に示すように、Makefileの関数に1行のスクリプトを渡します。
flag:
$(foreach f, $*.txt, printf "%s\n" 0a "$(grep -o '[0-9]\+' $f | sed 's/.*/read \"&\"/')" "" . w q | ed $f)
このスクリプト行の機能はここにあります。行を別のスクリプトに入れて、Makefileから次のように呼び出すと、なぜこのように機能しないのか戸惑います。
flag:
$(forech f, $*.txt, ./script $f)
それはうまくいきます。
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のいくつかの微妙な点に触れなければなりません、誰かが私を教えてくれますか?ありがとう。