すべてのコマンドが独自のシェルで実行されることを考慮すると、makefile で複数行の bash コマンドを実行する最適な方法は何でしょうか? たとえば、次のようになります。
for i in `find`
do
all="$all $i"
done
gcc $all
ベストアンサー1
行の継続にはバックスラッシュを使用できます。ただし、シェルはコマンド全体を 1 行に連結して受け取るため、一部の行をセミコロンで終了する必要もあることに注意してください。
foo:
for i in `find`; \
do \
all="$$all $$i"; \
done; \
gcc $$all
しかし、呼び出しによって返されたリスト全体を取得してfind
に渡すだけの場合はgcc
、実際には必ずしも複数行のコマンドは必要ありません。
foo:
gcc `find`
または、よりシェルの従来型の$(command)
アプローチを使用します ($
ただし、エスケープに注意してください)。
foo:
gcc $$(find)