首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Bash仅打印stderr,不打印stdout

Bash仅打印stderr,不打印stdout
EN

Stack Overflow用户
提问于 2014-08-16 01:29:08
回答 3查看 45.4K关注 0票数 56

我想要lint一个文件,并打印stderr (错误消息),但不打印stdout (说文件是OK的)。

代码语言:javascript
复制
php -l "foo/bar.php"

  • 如果没有错误,它会将"No errors“消息打印到标准输出。
  • 如果有错误,它会将详细消息打印到标准错误。我只想要这一个。

我认为>&会带来一些魔力,但我一直不明白它们是如何工作的。

我想要的是消耗所有的stdout,保持stderr。

(抱歉,如果这是令人费解的,但我还没有找到任何关于这方面的问题)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-16 01:30:49

只需将标准输出发送到null:

代码语言:javascript
复制
cmd > /dev/null

这保留了stderr,但取消了stdout。

票数 92
EN

Stack Overflow用户

发布于 2014-08-16 01:33:34

您可以使用:

代码语言:javascript
复制
php -l "foo/bar.php" 2>&1 > /dev/null

例如,为了在您的终端上只获取stderr,将stderr重定向到stdout,将stdout重定向到/dev/null

票数 12
EN

Stack Overflow用户

发布于 2014-08-16 01:35:31

如果没有错误,它会向标准输出输出一条"No errors“消息。如果有错误,它会向stderr打印一条详细的消息。我只要这一件。

如果发送了错误消息,这将打印错误消息;如果为空,则打印No error.

代码语言:javascript
复制
error=$(php -l "foo/bar.php" 2>&1 >/dev/null)
[[ -z $error ]] && error="No error."
echo "$error"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25331205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档