禁止 stderr 控制台输出,但在 Shell 中保留退出代码

Posted

技术标签:

【中文标题】禁止 stderr 控制台输出,但在 Shell 中保留退出代码【英文标题】:Suppress stderr console output but keep exit code in Shell 【发布时间】:2020-04-09 16:55:34 【问题描述】:

有没有办法可以抑制 sdterr 的控制台输出但保留退出代码?

我做到了

#!/bin/sh
command 2> /dev/null
STATUS=$?

但这样一来,即使退出代码也被抑制(并变成0)。

我希望在命令失败时无需集群控制台即可实现,除非启用了--verbose 标志,但它应该在命令失败时退出程序。

【问题讨论】:

【参考方案1】:

没关系,这确实有效,我在脚本的其他地方出错了。

今天我还了解到,分配一个变量也算作一个“命令”,因此退出代码仍然是 0

【讨论】:

以上是关于禁止 stderr 控制台输出,但在 Shell 中保留退出代码的主要内容,如果未能解决你的问题,请参考以下文章

NSLog() 到控制台和文件

shell脚本攻略1

shell基础02 标准文件描述符STDIN,STDOUT,STDERR和输入输出重定向

如何更改来自 stderr 的 java 日志控制台输出以脱颖而出?

stdout和stderr标准输出的区别

subprocess.run不抑制所有控制台输出