Mic*_*lle 5 php bash gnu-parallel phplint
我只想打印当前(递归)目录中的所有文件,而仅打印出有错误的文件,并在完成替换后将变量分配给1。
#!/bin/bash
lint_failed=0
find . -path ./vendor -prune -o -name '*.php' | parallel -j 4 sh -c 'php -l {} || echo -e "[FAIL] {}" && lint_failed=1';
if [ "$lint_failed" -eq "1" ]; then
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
范例:
[失败] ./app/Model/Example.php
上面的代码找不到任何错误,但是如果我运行php -l ./app/Model/Example.php,则会返回错误。
该parallel命令已经执行了您想要的操作:如果所有作业都以 0 退出,则它以 0 退出;如果任何一个作业以非零退出,则以非零退出。parallel的退出选项是可配置的,有关详细信息,请参阅EXIT STATUS的 部分。man parallel
在您的脚本中,使用 会|| echo掩盖作业的退出状态,但是您可以通过执行以下操作再次公开它(在 ubuntu 上测试了 bash 4.4.7):
#!/bin/bash
php_lint_file()
{
local php_file="$1"
php -l "$php_file" &> /dev/null
if [ "$?" -ne 0 ]
then
echo -e "[FAIL] $php_file"
return 1
fi
}
export -f php_lint_file
find . -path ./vendor -prune -o -name '*.php' | parallel -j 4 php_lint_file {}
if [ "$?" -ne 0 ]
then
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
769 次 |
| 最近记录: |