我想lint一个文件,然后打印stderr(错误信息),但是不打印stdout(说文件没问题)。
php -l "foo/bar.php"
我认为>&
会有些神奇,但我从来不知道它们是如何运作的。
我想要的是消耗所有标准输出,保持stderr。
(对不起,如果这是假的,但我没有发现任何确切的问题)
答案 0 :(得分:58)
只需将stdout发送到null:
cmd > /dev/null
这保留了stderr,但是抑制了stdout。
答案 1 :(得分:5)
您可以使用:
php -l "foo/bar.php" 2>&1 > /dev/null
即。将stderr重定向到stdout并将stdout重定向到/dev/null
,以便只在终端上获取stderr
。
答案 2 :(得分:0)
如果没有错误,则会打印一个"没有错误"给stdout的消息。 如果有错误,它会向stderr输出详细消息。我只想要这个。
如果发送了一条错误消息,则会打印错误消息;如果为空,则会打印No error.
。
ERROR=$(exec php -l "foo/bar.php" 2>&1 >/dev/null)
[[ -z $ERROR ]] && ERROR='No error.'
echo "$ERROR"