Это ожидаемое поведение. Пояснения: если вы добавите -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_]*
, поэтому должны начинаться с буквы или подчеркивания - и не могут начинаться с цифры.