首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何替换文本文件中的${}占位符?

如何替换文本文件中的${}占位符?
EN

Stack Overflow用户
提问于 2009-01-06 15:00:16
回答 11查看 184.6K关注 0票数 197

我想通过管道将“模板”文件的输出输出到MySQL中,该文件中散布着像${dbName}这样的变量。替换这些实例并将输出转储到标准输出的命令行实用程序是什么?

EN

回答 11

Stack Overflow用户

发布于 2009-01-06 07:10:07

使用/bin/sh。创建一个设置变量的小shell脚本,然后使用shell本身解析模板。像这样(编辑以正确处理换行符):

文件template.txt:

代码语言:javascript
复制
the number is ${i}
the word is ${word}

文件script.sh:

代码语言:javascript
复制
#!/bin/sh

#Set variables
i=1
word="dog"

#Read in template one line at the time, and replace variables (more
#natural (and efficient) way, thanks to Jonathan Leffler).
while read line
do
    eval echo "$line"
done < "./template.txt"

输出:

代码语言:javascript
复制
#sh script.sh
the number is 1
the word is dog
票数 49
EN

Stack Overflow用户

发布于 2011-05-19 23:19:00

考虑到最近的兴趣,我再次考虑了这一点,我认为我最初考虑的工具是m4,用于自动工具的宏处理器。因此,不使用我最初指定的变量,而是使用:

代码语言:javascript
复制
$echo 'I am a DBNAME' | m4 -DDBNAME="database name"
票数 24
EN

Stack Overflow用户

发布于 2017-02-22 17:01:45

创建rendertemplate.sh

代码语言:javascript
复制
#!/usr/bin/env bash

eval "echo \"$(cat $1)\""

template.tmpl

代码语言:javascript
复制
Hello, ${WORLD}
Goodbye, ${CHEESE}

渲染模板:

代码语言:javascript
复制
$ export WORLD=Foo
$ CHEESE=Bar ./rendertemplate.sh template.tmpl 
Hello, Foo
Goodbye, Bar
票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/415677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档