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