如果新值包含哈希 (#),则 m4 停止处理
m4 stops processing if new value contains hash (#)
如果值有散列,如何强制 m4 继续处理行?
$ echo a a a | m4 -D a=B+
B+ B+ B+
$ echo a a a | m4 -D a=B#
B# a a
我想要第二种情况的相同行为 - 可能吗? (所有三个匹配项都将被替换)。
据我所知,观察到的行为是不一致的,我在用户手册中找不到解释。
#
字符是注释的第一个字符,换行符是最后一个字符。 m4
解析第一个 a
并将其替换为 B#
。它没有扫描更多,因为它遇到了评论。
解决办法是把注释字符改成changecom
:
$ echo "changecom(BC,EC)a a a" | m4 -D a=B#
B# B# B#
当然你可以选择更好的评论开始和结束顺序。
Ps。您可以使用不带参数的简单 changecom
关闭评论:echo changecom a a a
。您可以从手册中阅读它:)
如果值有散列,如何强制 m4 继续处理行?
$ echo a a a | m4 -D a=B+
B+ B+ B+
$ echo a a a | m4 -D a=B#
B# a a
我想要第二种情况的相同行为 - 可能吗? (所有三个匹配项都将被替换)。
据我所知,观察到的行为是不一致的,我在用户手册中找不到解释。
#
字符是注释的第一个字符,换行符是最后一个字符。 m4
解析第一个 a
并将其替换为 B#
。它没有扫描更多,因为它遇到了评论。
解决办法是把注释字符改成changecom
:
$ echo "changecom(BC,EC)a a a" | m4 -D a=B#
B# B# B#
当然你可以选择更好的评论开始和结束顺序。
Ps。您可以使用不带参数的简单 changecom
关闭评论:echo changecom a a a
。您可以从手册中阅读它:)