Сделайте: несколько знаков $ - PullRequest
1 голос
/ 02 апреля 2011

Из раздела 4.14. Автоматическое создание предпосылок GNU make manual

 %.d: %.c
         @set -e; rm -f $@; \
          $(CC) -M $(CPPFLAGS) $< > $@.$$$$; \
          sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
          rm -f $@.$$$$

Что означает $$$$?

Кроме того, в книге, которую я читаю тамрецепт в файле make:

    $(AWK) '...                       \
      {                               \
       print "Killing " $$3;          \
       system( "$(KILL) -f " $$1 )    \
      }'

Все это в кавычках, так как это программа на awk.Я заменил остальную часть рецепта на ... Почему он использует $$, а не $?

Любые советы приветствуются.Спасибо.

1 Ответ

4 голосов
/ 02 апреля 2011

$ имеет значение как для shell, так и для make, и для awk.Если вам нужна семантика не-make, вы должны удвоить, чтобы избежать семантики make.

Второй пример прост: это просто awk-семантика для $1 и $3.

Первый - семантика оболочки для $$.$$ это:

$$
Process ID (PID) of the script itself. [5] The $$ variable often finds use in scripts to
construct "unique" temp file names (see Example 31-6, Example 16-31, 
and Example 15-27). This is usually simpler than invoking mktemp.

, чтобы быстро получить цитату.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...