globbing de arquivos no bash não sendo escolhido por php -l

0

Eu estou tentando executar a função lint do php em todos os arquivos em um diretório, e está provando ser mais difícil do que eu esperava. (Eu sei que existem arquivos não-php aqui, não estou preocupado com isso agora). Aqui está o que eu tentei:

$> 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

Com base na documentação aqui , tentei fazer isso:

$> 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

Mas ainda sem sorte. Como faço isso?

    
por user394 13.11.2015 / 19:48

2 respostas

1

Seu shell globbing foi (muito provavelmente) bem-sucedido e estava passando os arquivos para php -l , mas php -l processa apenas um arquivo por vez ( ref ). Uma das ideias mais curtas (não à prova de balas) que tenho:

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

Modifique o * para ser *.js ou qualquer outra extensão que você possa usar. Para várias extensões, basta empilhá-las:

for f in *.js *.inc *.module; do php -l "$f"; done
    
por 13.11.2015 / 19:58
2

Para evitar um loop, você pode usar xargs :

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

Não funcionaria para arquivos com novas linhas em seus nomes.

    
por 13.11.2015 / 20:10