PHP Lint 的 Bash 脚本始终返回 0

问题描述 投票:0回答:2

编辑:现在可以了。 我将其复制到我的 CentOS 盒子中,它就像一个魅力。 我在 Windows 上测试这个脚本,它只返回 0(即使 PHP LINT 给出错误)

这个 bash 脚本应该执行 PHP LINT 检查器。 无论我向

php -l
提供哪些文件,它总是返回 0(成功)。 我什至故意让我的一个文件出现语法错误(缺少分号),但它仍然返回 0。

出于测试目的,我将

php -l
存储在变量 $STUFF 中,并且如果
what
的返回状态为 0
,则返回 
php -l

我尝试了许多其他方法,但

php -l
不断返回0(成功)

#!/bin/bash

DIFF_FILES=$(git diff --cached --name-status --diff-filter=AM | awk '{print $2}')

function syntaxChecker() {
    for files in $DIFF_FILES; do
        STUFF=$(/c/PHP/php -l $files)
        if [ $STUFF -eq 0 ]; then
            echo 'what'
        fi
done
}

syntaxChecker
git bash phplint
2个回答
1
投票

出于测试目的,我将

php -l
存储在变量 $STUFF 中,并且如果
what
的返回状态为 0
,则返回 
php -l

你的代码不是这么说的。您的代码存储 php -l

output
,然后将其与 0 进行比较;命令的返回状态存储在
$?
中。与往常一样,您可以直接在
if
中检查非零返回状态。

if php -l ...

0
投票

PHP 8.3 开始,您不再需要 bash 脚本,

php -l
命令现在接受多个参数和全局模式:

php -l src/**/*.php public/*.php
© www.soinside.com 2019 - 2024. All rights reserved.