命令行上的m4定义

时间:2018-06-29 09:48:06

标签: m4

我正在尝试通过链接的http://mbreen.com/m4.html

学习m4

我有一个模板:

define(TPL, World)

Hello TPL

当我呼叫m4 -D TPL=foo template.m4时,它会输出Hello World,我不太理解,因为当我呼叫m4 -D TPL=123 template.m4时,它会按预期的Hello 123输出。

我这是预期的行为吗?在指南或手册页中找不到关于此的任何内容

1 个答案:

答案 0 :(得分:0)

这是预期的行为。说明:如果添加-D TPL=foo,则m4文件将是:

define(foo, World)
Hello foo

请注意,TPL中的define也有所更改!

如果您使用TPL=123,则define(123, World)无效,因为有效的m4宏名称为[a-zA-Z_][a-zA-Z0-9_]*,因此应以字母或下划线开头-并且可以不是以数字开头。