![bash 中的文件通配未被 php -l 拾取](https://linux22.com/image/77385/bash%20%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6%E9%80%9A%E9%85%8D%E6%9C%AA%E8%A2%AB%20php%20-l%20%E6%8B%BE%E5%8F%96.png)
我试图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