当前位置: 代码迷 >> 综合 >> shell脚本 丢弃报错信息,保留正常输出
  详细解决方案

shell脚本 丢弃报错信息,保留正常输出

热度:50   发布时间:2024-02-07 07:40:09.0

我们知道,shell中通过

>/dev/null 2>&1 

可以丢弃信息,但是标准输出和标准错误输出同时被丢弃了。

怎么做可以把错误输出丢弃掉,不在输出打印,而标准输出保留呢?

答案是通过赋值和错误信息重定向。将标准输出和错误输出都赋值给一个变量,然后通过if语句判断命令是否执行成功加以过滤:

如下脚本list xxxx文件,如果不存在肯定会报错:ls: cannot access xxxx: No such file or directory。我们不想看到这个错,而是默默的干点别的事情,比如:如果xxxx不存在就创建它。

var1=`ls xxxx 2>&1`;
if  [ $? -eq 0 ]; thenecho $var1
elsetouch xxxx
fi

上述脚本执行效果是:xxxx不存在,不打印任务错误信息,创建了xxxx;xxxx存在则输出该文件名。

$ ./test1.sh 
$ ./test1.sh 
xxxx

 

  相关解决方案