9

私はシェルスクリプトが初めてです。特定の順序でシェル スクリプトからメイク ファイルのリストを呼び出したい。各メイクファイルについて、結果を取得したい (make は成功または失敗)。エラーが発生した場合は、スクリプトの実行を停止します。成功した場合は、次のメイクファイルを実行する必要があります。

4

2 に答える 2

12

一般的なイディオムは、set -e;を使用してシェル スクリプトを作成することです。これにより、スクリプトは最初のエラーで終了します。

#!/bin/sh
set -e
make -f Makefile1
make -f Makefile2
:

スクリプト全体をさらに制御する必要がある場合は、削除set -eして、代わりにmake失敗時に明示的に終了することができます。

make -f Makefile1 || exit
make -f Makefile2 || exit

コードの重複を減らすには、ループを作成します。

for f in Makefile1 Makefile2; do
    make -f "$f" || exit
done

明確にするために、||「または」および&&「および」接続詞は、

if make -f Makefile1; then
     : "and" part
else
    : "or" part
fi

最後に、説明した動作は、Make 自体の動作とまったく同じように聞こえます。おそらく、最上位の Makefile は実際にあなたのシナリオに適したソリューションでしょうか?

.PHONY: all
all:
    $(MAKE) -f Makefile1
    $(MAKE) -f Makefile2
于 2013-06-14T07:00:28.600 に答える
2
make -f makefile1
make -f makefile2

メイクファイルを順番に実行する

各メイクファイルの出力を保存する

make -f makefile1 >> output1
make -f makefile2 >> output2

各メイクファイルの後に結果を確認する

make -f makefile1 >> output1

この行のスクリプトの後、
echo $?を使用します。これは if と組み合わせて使用​​します。エコー $? 結果がゼロの場合は成功するので、echo$? 結果がゼロの場合、次のファイルを実行します。それ以外の場合は終了します

于 2013-06-14T06:50:29.613 に答える