【发布时间】:2021-07-12 04:40:37
【问题描述】:
我有以下设置:
aborter.cpp
#include <cassert>
int main(int argc, char** argv) { assert(argc >= 2); return 0; }
// compiled to 'aborter'
test.sh
#!/usr/bin/bash
function runpipe() {
yes | aborter "$@"
test $? -ne 0 || echo OK
}
runpipe "$@"
运行test.sh 123 仅打印OK。仅运行 test.sh 会输出以下内容:
aborter: aborter.cpp:2: int main(int, char**): Assertion `argc >= 2' failed.
./test.sh: line 3: 2521 Broken pipe yes
2522 Aborted | aborter "$@"
在第二种情况下,如何抑制 bash 输出的“Broken pipe”和“Aborted”作业控制行? 我希望输出只是 C++ 断言转储(第一行)。
这不需要编辑aborter.cpp 或test.sh 界面。
【问题讨论】:
-
您使用的是什么操作系统?
-
将错误消息重定向到
dev/null,而不是标准输出runpipe "$@" 2>/dev/null