プログラムがさまざまな結果(主にエラー)に対してさまざまな値(たとえば、0、1、2、3など)を返す必要がある場合、このプログラムを呼び出すmakefileは、残りのmakefileコマンドの実行を停止する必要があります。そのコマンドがエラーを生成した(ゼロ以外の値を返す)場合でも、makefileの実行を続行する方法はありますか?
皆さん、ありがとうございました。
プログラムがさまざまな結果(主にエラー)に対してさまざまな値(たとえば、0、1、2、3など)を返す必要がある場合、このプログラムを呼び出すmakefileは、残りのmakefileコマンドの実行を停止する必要があります。そのコマンドがエラーを生成した(ゼロ以外の値を返す)場合でも、makefileの実行を続行する方法はありますか?
皆さん、ありがとうございました。
ゼロ以外の終了コードを返すことがわかっているコマンドをテストするには、次のように使用します。
test: mybadcommand
mybadcommand; test $$? -eq 1
これは、mybadcommandが1の終了値を返すことをテストします。Makefilesでは、make $?の世界では、終了ステータスを参照するシェル変数をエスケープする必要があることに注意してください。ターゲットよりも新しい依存関係を意味します。
したがって、上記のスニペットでは、$$?を使用するように注意してください。$?ではなく。
mycommand; test $? -gt 3
必要に応じてテストを変更します。エラーの検出が停止するため、-
orを使用することはお勧めできません。-k
make
メイクファイルの場合、2 つのコマンドは同じ行になければならないことに注意してください。
コメントの後に追加されたフィードバック: エラーに対応する前に無条件に後続のコマンドを実行できるようにするために、次のこともできます。
mycommand; status=$PIPESTATUS; follow-on-command && test $status -gt 3