ファイルの中身を一行ずつ処理する場合、シェルで処理するだけだったら、これでおk。
cat a.txt | while read line
do
echo $line
done
ところが、Makefileでこれをやると怒られる。
怒られずに同じことをやるには、xargs
を使うとよい。
以下のように書くと、ファイルの中身が一行ずつecho
の引数に渡されて実行される。
cat a.txt | xargs -L 1 -i echo {}
a.txt
1+1
2+2
3+3
出力
1+1
2+2
3+3
引数としてではなく、標準入力として渡したい場合、echo
を経由してパイプすればよい。
cat a.txt | xargs -L 1 -i echo {}|bc
a.txt
1+1
2+2
3+3
出力
2
4
6
後者はちょっと回りくどいので、いい方法を知っていたらぜひ教えてください。