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

由于管道 to tee,第二个make的退出状态被忽略。

要获得您想要的行为,您需要启用pipefail: 将set -xe行更改为

set -xe -o pipefail

调试脚本,-x 与设置-euxo pipelinefail 有什么区别?了解详情。

相关内容