php -l:抑制有效文件的输出
php -l: suppress output on valid files
当使用 php -l myFile.php
命令(PHP 5.5.30)时,如果文件有语法错误,我会收到正确的警告和堆栈跟踪等。
但是,如果文件没有语法警告,我会收到消息
No syntax errors detected in myFile.php
有没有办法让命令在语法有效时没有输出?我只关心文件是否具有无效语法 - 我不需要说明它有效的消息。
"no syntax errors..." 消息在 stdout
上发送,而语法错误在 stderr
上发送。如果你不想要它们,你可以将它们重定向到 /dev/null
之类的地方。
php -l file.php 1> /dev/null
如果有错误则输出错误,如果没有错误则什么也不输出。您确实丢失了 "Errors parsing..." 消息,但如果出现问题,将会收到错误消息。
不要检查输出,检查 return 代码。
$ php -l good.php &> /dev/null; echo $?
0
$ php -l bad.php &> /dev/null; echo $?
255
所以:
if ! php -l somescript.php &> /dev/null; then
echo 'OH NOES!'
fi
或者,如果您喜欢:
if ! foo=$(php -l somescript.php 2>&1); then
echo $foo
fi
php -ln script.php >/dev/null || php -ln script.php
编辑:
chronic php -ln script.php
如果命令成功 (returns 0):
,您可以使用 chronic
来抑制所有输出
chronic php -l myFile.php
DESCRIPTION
chronic
runs a command, and arranges for its standard out and standard error to only be displayed if the command fails (exits nonzero or crashes). If the command succeeds, any extraneous output will be hidden.
在 Debian 上,它位于 moreutils
软件包中。
当使用 php -l myFile.php
命令(PHP 5.5.30)时,如果文件有语法错误,我会收到正确的警告和堆栈跟踪等。
但是,如果文件没有语法警告,我会收到消息
No syntax errors detected in myFile.php
有没有办法让命令在语法有效时没有输出?我只关心文件是否具有无效语法 - 我不需要说明它有效的消息。
"no syntax errors..." 消息在 stdout
上发送,而语法错误在 stderr
上发送。如果你不想要它们,你可以将它们重定向到 /dev/null
之类的地方。
php -l file.php 1> /dev/null
如果有错误则输出错误,如果没有错误则什么也不输出。您确实丢失了 "Errors parsing..." 消息,但如果出现问题,将会收到错误消息。
不要检查输出,检查 return 代码。
$ php -l good.php &> /dev/null; echo $?
0
$ php -l bad.php &> /dev/null; echo $?
255
所以:
if ! php -l somescript.php &> /dev/null; then
echo 'OH NOES!'
fi
或者,如果您喜欢:
if ! foo=$(php -l somescript.php 2>&1); then
echo $foo
fi
php -ln script.php >/dev/null || php -ln script.php
编辑:
chronic php -ln script.php
如果命令成功 (returns 0):
,您可以使用chronic
来抑制所有输出
chronic php -l myFile.php
DESCRIPTION
chronic
runs a command, and arranges for its standard out and standard error to only be displayed if the command fails (exits nonzero or crashes). If the command succeeds, any extraneous output will be hidden.
在 Debian 上,它位于 moreutils
软件包中。