将变量从一个文件传输到另一个文件

将变量从一个文件传输到另一个文件

我有两个文件,配置和模板,我想用配置中的变量替换模板的部分内容:

config.txt 包含:

MYURL='www.google.com'

template.txt 包含:

url = MYURL

我用了

sed -e "s/MYURL/${replace}$MYURL/" template

但 config.txt 的变量仅在该文件中定义。我也尝试过使用

source config.txt
echo $MYURL

但它没有达到我想要的效果。我怎么能这样做呢?

答案1

一些评论只是为了说明为什么我稍后会使用 grep:

$ cat config.txt
/* blah blah yadda yadda */
/* look at me... I'm a text file, not a bash script... don't source me directly */
#MYURL='www.google.com'
MYURL='www.stackexchange.com'

$ cat template.txt
#url = example
url = MYURL

和脚本:

$ source <(grep -E "^[0-9A-Za-z]+=" config.txt) 
$ echo $MYURL 
www.stackexchange.com
$ sed -r -e "s/^url[ ]*=.*/url=${MYURL}/" template.txt 
#url = example
url=www.stackexchange.com

(顺便说一句,我不知道你的 sed 脚本的意图是什么......我的有一个完全不同的方法,并且支持模板 url=... 和 url = ... 中带或不带空格,但你可以' config.txt 中没有空格,否则您无法获取它...无需再次将 sed 添加到我的 grep 中)

编辑:哦,我猜你想要的是用虚拟值而不是键来替换,如果你愿意的话,可以简单地这样做:

$ sed -r -e "s/MYURL/${MYURL}/" template.txt 
#url = example
url = www.stackexchange.com

相关内容