phplint — php -l: подавить вывод на допустимые файлы

При использовании php -l myFile.php команда (PHP 5.5.30), если файл имеет синтаксическую ошибку, я получаю правильные предупреждения и трассировки стека и т. д.

Однако, если файл не имеет синтаксических предупреждений, я получаю сообщение

В myFile.php синтаксических ошибок не обнаружено

Есть ли способ, чтобы команда не имела вывода, когда синтаксис действителен? Мне важно только, если файл имеет неверный синтаксис — мне не нужно сообщение о том, что он действителен.

2

Решение

Сообщение «нет синтаксических ошибок …» отправлено на stdout в то время как синтаксические ошибки отправляются на stderr, Вы можете перенаправить их куда-то, как /dev/null если ты не хочешь их.

php -l file.php 1> /dev/null

это выведет ошибки, если они были или нет, если ошибок нет. Вы теряете сообщение «Разбор ошибок …», но получаете ошибки, если возникла проблема.

5

Другие решения

Не проверяйте вывод, проверьте код возврата.

$ php -l good.php &> /dev/null; echo $?
0

$ php -l bad.php &> /dev/null; echo $?
255

Так:

if ! php -l somescript.php &> /dev/null; then
echo 'OH NOES!'
fi

Или, если вы хотите

if ! foo=$(php -l somescript.php 2>&1); then
echo $foo
fi
1

Ты можешь использовать chronic подавить весь вывод, если команда выполнена успешно (возвращает 0):

chronic php -l myFile.php

ОПИСАНИЕ

chronic запускает команду и обеспечивает отображение ее стандартного выхода и стандартной ошибки только в случае сбоя команды (выход из ненулевого значения или сбой). Если команда выполнена успешно, любой посторонний вывод будет скрыт.

На Debian это в moreutils пакет.

1

php -ln script.php >/dev/null || php -ln script.php

РЕДАКТИРОВАТЬ:

chronic php -ln script.php
0
По вопросам рекламы [email protected]