对于编译 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
行更改为请参阅调试脚本,-x 与设置 -euxo pipefail 有什么区别?详情。