Kernel

make && echo ‘hello’ 只有在 make 成功時才列印 hello(核心)

  • June 4, 2022

對於編譯 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

由於管道到tee,第二個make的退出狀態被忽略。

要獲得您想要的行為,您需要啟用pipefail:將set -xe行更改為

set -xe -o pipefail

請參閱調試腳本,-x 與設置 -euxo pipefail 有什麼區別?詳情。

引用自:https://unix.stackexchange.com/questions/704929