在脚本中仅抑制bash作业控制消息(中止、管道断开)
我有以下设置: 中止程序在脚本中仅抑制bash作业控制消息(中止、管道断开),bash,jobs,abort,Bash,Jobs,Abort,我有以下设置: 中止程序 #包括 intmain(intargc,char**argv){assert(argc>=2);返回0;} //编译为“中止” test.sh #/usr/bin/bash 函数runpipe(){ 是|中止“$@” 测试$?-ne 0 | |回波正常 } 管路“$@” 运行test.sh 123仅打印OK。仅运行test.sh输出以下内容: aborter:aborter.cpp:2:int main(int,char**):断言'argc>=2'失败。 ./te
#包括
intmain(intargc,char**argv){assert(argc>=2);返回0;}
//编译为“中止”
test.sh
#/usr/bin/bash
函数runpipe(){
是|中止“$@”
测试$?-ne 0 | |回波正常
}
管路“$@”
运行test.sh 123
仅打印OK
。仅运行test.sh
输出以下内容:
aborter:aborter.cpp:2:int main(int,char**):断言'argc>=2'失败。
./test.sh:第3行:2521断管是
2522中止|中止器“$@”
在第二种情况下,如何抑制bash输出的“断管”和“中止”作业控制行?
我希望输出只是C++断言转储(第一行)。
这不需要编辑aborter.cpp
或test.sh
界面
在第二种情况下,如何抑制bash输出的“断管”和“中止”作业控制行
将bash stderr重定向为null,进程除外
exec 3<&2 2>/dev/null
function runpipe() {
yes | aborter "$@" 2>&3
test $? -ne 0 || echo OK
}
runpipe "$@"
exec 3/dev/null
函数runpipe(){
是|中止“$@”2>&3
测试$?-ne 0 | |回波正常
}
管路“$@”
您使用的是什么操作系统?将错误消息重定向到dev/null
而不是std outputrunpipe“$@”2>/dev/null
,谢谢!