ディレクトリ内のすべての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 {}