make && echo "hello" は make が成功した場合にのみ hello を印刷します (カーネル)

make && echo "hello" は make が成功した場合にのみ hello を印刷します (カーネル)

Linuxカーネルをコンパイルするには、

make_runner.sh && echo "hello"

一部のカーネルのコンパイルが失敗しても、hello が印刷されます。

すべてのコンパイルターゲットが正しく構築されている場合にのみ印刷する方法はありますか?

make_runner.sh次はどこですか?

#!/usr/bin/env bash
set -xe
make O=out ARCH=arm64 CC=clang CLANG_TRIPLE=aarch64-linux-gnu- vendor/citrus-perf_defconfig
make O=out ARCH=arm64 CC=clang CLANG_TRIPLE=aarch64-linux-gnu- -j$(nproc --all) 2>&1 | tee kernel.log

答え1

のパイプのため、tee2番目のパイプの終了状態はmake無視されます。

必要な動作を得るには有効にする必要があります。pipefail:set -xe行を次に変更します。

set -xe -o pipefail

バラよりスクリプトのデバッグ、-xと-euxo Pipelinefail設定の違いは何ですか?もっと学ぶ。

関連情報