Bash Script для PHP Lint всегда возвращает 0

РЕДАКТИРОВАТЬ: ЭТО РАБОТАЕТ СЕЙЧАС. Я скопировал это в мою коробку CentOS, и она работает как шарм. Я тестировал этот скрипт в Windows, и он возвращает только 0 (даже когда PHP LINT выдает ошибку)

Этот bash-скрипт должен выполнять PHP LINT CHECKER. Независимо от того, какие файлы я кормить php -l всегда возвращает 0 (успех). Я даже намеренно вызвал синтаксическую ошибку в одном из моих файлов (отсутствует точка с запятой), но он по-прежнему возвращает 0.

Для тестирования у меня есть php -l хранится в переменной $STUFF и возвращает его what если статус возврата php -l это 0

Я пробовал множество других методов, но 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

1 ответ

Для тестирования у меня есть php -l хранится в переменной $STUFF и возвращает его what если статус возврата php -l это 0

Это не то, что говорит ваш код. Ваш код хранит вывод php -l а затем сравнивает это с 0; статус возврата команды хранится в $?, И, как всегда, вы можете проверить ненулевой статус возврата прямо в if,

if php -l ...
Другие вопросы по тегам