Bash 在make期间自动生成conf文件

Bash 在make期间自动生成conf文件,bash,automation,sed,makefile,Bash,Automation,Sed,Makefile,我有一个conf文件,其格式如下: 名称=值 我想做的是使用一个模板,根据另一个文件中的一些值生成一个结果 例如,假设我有一个名为path的文件,其中包含 CONF_DIR=/etc BIN_DIR=/usr/sbin LOG_DIR=/var/log CACHE_DIR=/home/cache 这个路径文件包含在一个Makefile中,这样当我调用makeinstall时,路径就会被创建并生成应用程序和conf文件 现在我还有一个conf文件,我想用它作为模板 假设模板包含以下行: LogF

我有一个conf文件,其格式如下:

名称=值

我想做的是使用一个模板,根据另一个文件中的一些值生成一个结果

例如,假设我有一个名为path的文件,其中包含

CONF_DIR=/etc
BIN_DIR=/usr/sbin
LOG_DIR=/var/log
CACHE_DIR=/home/cache
这个路径文件包含在一个Makefile中,这样当我调用makeinstall时,路径就会被创建并生成应用程序和conf文件

现在我还有一个conf文件,我想用它作为模板

假设模板包含以下行:

LogFile=$(LOG\u DIR)/myapp.LOG

然后生成一个目标配置,该配置将

LogFile=/var/log/myapp.log ... 等


我认为这可以用sed脚本完成,但我对sed和正则表达式语法不是很熟悉。我也会接受一个shell脚本版本。

你可能会想把它当作一个简单的模板语言来代替。

你应该在这里使用AutoCONF,它的工作就是这样做。您必须在文件中编写conf.in,其中所有替换都用@标记,例如

prefix=@prefix@
bindir=@bindir@
然后编写configure.ac,这是一个shell脚本,将为您执行这些替换并创建conf。conf随后包含在Makefile中。我甚至建议使用Makefile.in文件,即在Makefile中包含代码片段


如果您使用标准路径名,configure.ac是一个四行程序,并且具有与GNU兼容(易于理解和使用)的附加优势。

自从您让我看m4之后,我就开始看自动工具了。也许我能帮上忙?有什么想法吗?好的,我认为m4是使用自动工具进行生成的方式。只是需要弄清楚怎么做。我会把这个问题作为一个单独的问题问。我会暂时不回答这个问题,以防有人有更好的想法。