определения m4 в командной строке - PullRequest
0 голосов
/ 29 июня 2018

Я учусь m4 по этой ссылке http://mbreen.com/m4.html

У меня есть шаблон:

define(TPL, World)

Hello TPL

Когда я звоню m4 -D TPL=foo template.m4, он выводит Hello World, что я не совсем понимаю, потому что, когда я звоню m4 -D TPL=123 template.m4, он выводит, как ожидалось Hello 123.

Я это ожидаемое поведение? Я не могу найти что-либо об этом в руководстве или на страницах руководства

1 Ответ

0 голосов
/ 29 июня 2018

Это ожидаемое поведение. Пояснения: если вы добавите -D TPL=foo ваш файл m4 будет:

define(foo, World)
Hello foo

Обратите внимание, что TPL изменилось и в define!

Если вы используете TPL=123, define(123, World) недействителен, поскольку действительные имена m4 -macro * [a-zA-Z_][a-zA-Z0-9_]*, поэтому должны начинаться с буквы или подчеркивания - и не могут начинаться с цифры.

...