shell定义带变量的模板,直接修改变量,用这种方法再也不用担心正则匹配不准的问题了

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell定义带变量的模板,直接修改变量,用这种方法再也不用担心正则匹配不准的问题了相关的知识,希望对你有一定的参考价值。

之前用shell 写脚本,有时候不光要定义一个 配置文件,很多时候还要有个模板,不同的环境直接替换相同的模板内容来用;然而,在这之前,一直都是用的 sed 、 awk 、grep 之类的。忽然有一天有个 yaml 文件,里面要替换的太多,sed 太麻烦,用这种方法,不知道要少写多少正则。。。
淡不多扯,我给大家伙上一个例子:

创建一个模板,在模板内直接写变量

vim a.model
#This is app config model
app_name=$name
app_ip=$ip

shell 脚本直接替换变量

vim b.sh
#!/bin/bash

name="bill_server"
ip="192.168.3.22"
all_variables="name=$name ip=$ip"
cp -a a.model rfile.conf
resourcefile=cat rfile.conf
printf "$all_variables\ncat << EOF\n$resourcefile\nEOF" | bash > rfile.conf

运行脚本后,查看生成的配置文件:

cat rfile.conf

#This is app config model
app_name=bill_server
app_ip=192.168.3.22

是不是很方便?如果有很多环境用一样的配置文件,用这个方法做配置文件,是不是很方便,只要把shell中的变量换成从外边传参,复制的文件也饿改成变量,就可以一下生成很多相同格式内容不同的文件了。如果这个配置文件足够长,那么省了多少正则呢?

以上是关于shell定义带变量的模板,直接修改变量,用这种方法再也不用担心正则匹配不准的问题了的主要内容,如果未能解决你的问题,请参考以下文章

三Shell变量类型和运算符

Jenkins可用环境变量以及使用方法

Shell学习

shell变量用grep怎么不能赋值

awk引用shell中变量的几种方法

shell脚本编程学习笔记