bash 中的文件通配未被 php -l 拾取

bash 中的文件通配未被 php -l 拾取

我试图lint在目录中的所有文件上运行 php 函数,事实证明这比我预期的要难。 (我知道这里有非 php 文件;我现在不关心这个。)这是我尝试过的:

$> php -l *
No syntax errors detected in embeddedlabels.js
$> php -l \*
Could not open input file: *
$> ls *
embeddedlabels.js  README.txt  myfile.admin.inc  myfile.css  myfile.info  myfile.install  myfile.js  myfile.module
$> php -l $(ls *)
No syntax errors detected in embeddedlabels.js

基于文档在这里,我尝试过这个:

$> echo *
embeddedlabels.js README.txt myfile.admin.inc myfile.css myfile.info myfile.install myfile.js myfile.module

$> php -l $(echo *)
No syntax errors detected in embeddedlabels.js

但仍然没有运气。我该怎么做呢?

答案1

为了避免循环,您可以使用xargs

ls * | xargs -I{} php -l {}

它不适用于名称中带有换行符的文件。

答案2

您的 shell 通配符(很可能)成功,并将文件传递给php -l,但php -l一次只处理一个文件(参考)。我最短的(不是防弹的)想法之一:

for f in *; do php -l "$f"; done

将 修改*为 be*.js或您可能使用的任何其他扩展。对于多个扩展,只需将它们放入:

for f in *.js *.inc *.module; do php -l "$f"; done

相关内容