最初のコマンドエラー時にxargsを強制的に停止します。

最初のコマンドエラー時にxargsを強制的に停止します。

ディレクトリ内のすべてのmakeファイルを見つけて実行するコマンドを実行していますmake build

xargs最初の失敗で停​​止したいですmake build

これがこれまで私の命令です。

$ find . -name "Makefile" | xargs dirname | xargs -I {} make -C {} build

問題は、xargs失敗しても続行されることですmake build。最終ステータスコードを確認してみると以下のようになります。

$ echo $?
123

マンページを確認するとき。それがまさにその内容です。

123 if any invocation of the command exited with status 1-125

そのうちのいくつかはmake build出口1または他の理由で失敗するので、これは意味があります。

xargs最初のエラーが発生した場合に停止する方法はありますかmake build

答え1

XARGS(1):

このコマンドの呼び出しが状態 255 で終了すると、xargs は追加の入力を読み取ることなく即座に停止します。

サブシェルを使用して以下を返すことができます255

find . -name "Makefile" | xargs dirname | \
  xargs -I {} sh -c 'make -C "$1" build || exit 255' sh {}

関連情報