如何以内联输入内容的方式运行m4宏处理器?
m4 内联输入无需创建实体文件的实现方法
方法1:交互式直接输入
m4 默认不指定输入文件时,会从标准输入读取内容,直接执行m4命令后输入内容,按下Ctrl+D结束输入即可得到结果:
$ m4 define(add2, `eval($1+$2)') Adding 2+4=add2(2,4) # 按下 Ctrl+D 结束输入
输出结果:
Adding 2+4=6
方法2:Here Document 写法(适用于脚本场景)
在shell脚本中使用时,可通过Here Document直接把内容传递给m4,无需创建临时文件。给结束标记加单引号可以避免shell提前解析内容中的特殊字符:
m4 <<'EOF' define(add2, `eval($1+$2)') Adding 2+4=add2(2,4) EOF
方法3:Here String 单行快速处理
如果内容较短,可以用Here String 一次性传入,注意转义shell特殊字符:
m4 <<< "define(add2, \`eval(\$1+\$2)') Adding 2+4=add2(2,4)"
内容的提问来源于stack exchange,提问作者David542
相关产品推荐
相关产品推荐

