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

我们知道,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
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Shell 脚本中执行 `ctx` 命令报错可能有多种原因。以下是一些常见的解决方法和建议: 1. 检查 `ctx` 命令是否可用:首先,请确保 `ctx` 命令在您的系统上可用。您可以在终端中直接尝试运行 `ctx` 命令,确认是否能够正常执行。如果无法执行,请检查是否正确安装了相关的软件或工具,并确保其在系统路径中。 2. 检查权限:确保您在执行脚本时具有足够的权限来运行 `ctx` 命令。如果脚本是以普通用户身份运行的,可能需要使用 `sudo` 或管理员权限来执行特定的命令。 3. 检查环境变量:某些命令或工具可能需要特定的环境变量设置才能正常工作。请确保您的脚本中设置了正确的环境变量,或者在脚本中明确指定命令的路径,例如 `/path/to/ctx`。 4. 检查参数和语法:确保在执行 `ctx` 命令时提供了正确的参数,并且命令的语法是正确的。您可以参考相关文档或手册来了解正确的命令使用方法和参数选项。 5. 查看错误信息:如果 `ctx` 命令报错,尝试查看报错信息以获取更多的线索。错误信息可能会指示具体的问题或错误原因。请注意,错误信息可能会在标准输出或标准错误流中显示,您可以使用重定向或管道来捕获和查看这些信息。 如果您提供更详细的信息报错消息,我可以提供更具体的帮助。另外,请确保您使用的 `ctx` 命令与我之前提到的 `ctx` 没有混淆,因为我是一个独立开发的 AI,并不与任何特定的 `ctx` 命令相关联。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值