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

您所在的位置:网站首页 shell脚本报错后会继续执行吗 shell脚本:丢弃报错信息,保留正常输出

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

2023-07-17 15:38| 来源: 网络整理| 查看: 265

我们知道,shell中通过

>/dev/null 2>&1

可以丢弃信息,但是标准输出和标准错误输出同时被丢弃了。其含义是:将stderr重定向到stdout,然后将它们一起丢给/dev/null文件。

怎么做可以把错误输出丢弃掉,不再输出打印,只打印标准输出呢?

# 丢弃标准错误输出 ll anaconda-ks.cfg xxxx 2>/dev/null -rw-------. 1 root root 1707 Aug 18 18:55 anaconda-ks.cfg # 丢弃标准输出 ll anaconda-ks.cfg xxxx 1>/dev/null ls: cannot access xxxx: No such file or directory

也可以通过赋值和错误信息重定向。将标准输出和错误输出都赋值给一个变量,然后通过if语句判断命令是否执行成功加以过滤(很早之前自己想的一个办法~~):

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

var1=`ls xxxx 2>&1`; if [ $? -eq 0 ]; then echo $var1 else touch xxxx fi

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

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


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3