cat writebug.cn/history

一个开发者的技术博客。

bash的字符串模板

在一个项目中,我想用一个配置模板文件自动生成配置文件,即为从nginx.conf.template 自动生成一个特定的nginx.conf

如果使用bash来填充展开模板,则需要eval,或者source之类的操作,因为bash不支持对字符串(当作数据读取的文件中的字符串,而不是shell脚本中字符串)的变量替换。

解决方案是用 envsubst。 这个命令支持使用环境变量展开字符串模板。

#一般用法
envsubst < nginx.conf.template > nanjing.conf

#指定特定待替换的环境变量
envsubst '${VAR_NAME}' < nginx.conf.template > nanjing.conf