我的conf文件格式为:
名=值
我想要做的是使用模板,根据另一个文件中的某些值生成结果。
例如,假设我有一个名为PATHS的文件,其中包含
CONF_DIR=/etc
BIN_DIR=/usr/sbin
LOG_DIR=/var/log
CACHE_DIR=/home/cache
此PATHS文件包含在Makefile中,因此当我调用make install时,会创建路径并正确复制构建的应用程序和conf文件。
现在我还有一个conf文件,我想用它作为模板。
假设模板包含
之类的行日志文件= $(LOG_DIR)/myapp.log ...
然后生成一个具有
的目标conf=日志文件的/ var /日志/ myapp.log ... 等
我认为这可以使用sed脚本完成,但我对sed和正则表达式语法不是很熟悉。我也会接受shell脚本版本。
答案 0 :(得分:0)
您可能希望将using m4视为简单的模板语言。
答案 1 :(得分:0)
你绝对应该选择autoconf,他的工作就是这样做。您必须编写一个conf.in文件,其中所有替换都标有@'s,例如
prefix=@prefix@
bindir=@bindir@
并编写一个configure.ac,这是一个shell脚本,它将为您执行这些替换并创建conf。 conf随后包含在Makefile中。我甚至建议使用Makefile.in文件,即在Makefile中包含你的代码片段。
如果你保持标准路径名,你的configure.ac是一个四线程,并具有兼容GNU(易于理解和使用)的附加优势。