Bash只打印标准错误,不打印标准输出



我想检测一个文件,并打印标准输出(错误消息),但不打印标准输出(说文件是OK的)。

php -l "foo/bar.php"
  • 如果没有错误,它打印一个"no errors"消息到标准输出。
  • 如果有错误,它打印一个详细的消息给stderr。我只要这个。

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

我想要的是消耗所有的标准输出,保持标准输出。

将stdout设置为null:

cmd > /dev/null

保留标准错误,但抑制标准输出。

您可以使用:

php -l "foo/bar.php" 2>&1 > /dev/null

。将stderr重定向到stdout, stdout重定向到/dev/null,以便在您的终端上只获得stderr

如果没有错误,打印" no error "消息到标准输出。如果有错误,它会打印一条详细的消息给stderr。我只要这个。

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

error=$(php -l "foo/bar.php" 2>&1 >/dev/null)
[[ -z $error ]] && error="No error."
echo "$error"

最新更新