Как проверить вывод команды в Make rule?

между моим lint и модульными тестами, я хочу проверить, генерирует ли какой-либо php-файл какой-либо вывод.

я пытаюсь что-то вроде этого, которые, очевидно, не работают:

.PHONY: php_inc
php_inc:
ifneq (,$(shell php -e src/*inc))
$(error PHP include files should not have any output when parsed)
endif

предложения о том, как написать это, или лучший способ подойти к проблеме?

0

Решение

Вы могли бы сделать это, чтобы избежать выполнения php дважды:

@output=`php -e src/*inc`; \
if [ ! -z "$$output" ]; then \
echo "PHP include files should not output. Got:"; \
echo $$output; \
exit 1; \
fi

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

1

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

документирование моей текущей работы вокруг:

@if [ ! -z "`php -e src/*inc`" ]; then \
echo "PHP include files should not output. Got:"; \
php -e src/*inc; \
exit 1; \
fi

или немного более притворно … но мне нравятся цитаты там. дай мне теплое чувство безопасности 🙂

@if [ ! -z $(shell $(PHP) -e src/*inc) ]; then \
0

По вопросам рекламы [email protected]