1. ホーム
  2. bash

[解決済み] makefile での複数行の bash コマンド

2022-05-10 08:14:19

質問

すべてのコマンドはそれ自身のシェルで実行されることを考慮すると、 makefile の中で複数行の bash コマンドを実行する最良の方法は何でしょうか。たとえば、このように。

for i in `find`
do
    all="$all $i"
done
gcc $all

どのように解決するのですか?

バックスラッシュは行の継続に使うことができます。ただし、シェルはコマンド全体を1行に連結して受け取るので、一部の行をセミコロンで終了させる必要があることに注意してください。

foo:
    for i in `find`;     \
    do                   \
        all="$$all $$i"; \
    done;                \
    gcc $$all

しかし、単に find で返されたリストを gcc に渡すと、必ずしも複数行のコマンドを必要としない。

foo:
    gcc `find`

あるいは、よりシェルに近い手法で $(command) を使うこともできます (この場合 $ のエスケープに注意してください)。

foo:
    gcc $$(find)