メイクファイル内の複数行のbashコマンド 質問する

メイクファイル内の複数行のbashコマンド 質問する

すべてのコマンドが独自のシェルで実行されることを考慮すると、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)

おすすめ記事