2013-08-07 3 views
4

Мы используем @echo "do...", позволяя печатать только do.... Но кто может сказать мне, что означает это условие?Что означает «@» в make-файле?

COUNT=$(shell ls | wc -l) 

Тогда

@COUNT=$(shell ls | grep abc | wc -l) 

Что среднее второй?

+0

Эти две линейные изделия, используемые в одном файле makefile. – wuwl

+1

Мы не можем ответить на вопрос о 'COUNT', потому что вы не даете никакого контекста о том, где он появляется. Символ '@' имеет особое значение, если он находится в начале логической строки рецепта (которому предшествует жесткий символ TAB в контексте правила). Если эта строка появляется вне рецепта, то '@' не имеет особого значения для make, и вышеприведенный оператор просто устанавливает переменную make с именем '@ COUNT' на вывод команды оболочки' ls | grep abc | wc -l' – MadScientist

+0

Возможный дубликат [что префикс @ - означает в make-файле?] (http://stackoverflow.com/questions/28305609/what-does-prefix-mean-in-makefile) –

ответ

7

Он отключает печать выполняемой командной строки. Любой вывод из самой команды по-прежнему появляется. См. this Предыдущий вопрос или посмотреть это Makefile ссылка.

+0

Значит ли это, что второй COUNT получит только новое значение? – wuwl

+0

Операция присваивания не изменяется, она просто происходит молча. – Spaceghost

3

Он будет скрывать вывод командной строки при выполнении. Обычно каждая команда при выполнении правила печатается на консоли. Это будет подавлять этот вывод.

+2

Подробнее в http://www.gnu.org/software/make/manual/make.html#Echoing – nos

+0

Итак, как насчет значения 'COUNT' во второй строке? – wuwl

+0

Значение не изменяется, только строка не отображается на консоль. Это просто простой способ убрать ваш выход для сложных make-файлов, чтобы вы могли видеть, что уместно, и скрыть другие вещи. – Devolus

Смежные вопросы