我想检测一个文件,并打印标准输出(错误消息),但不打印标准输出(说文件是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"