以前用shell 写脚本,有时候不光要定义一个 配置文件,不少时候还要有个模板,不一样的环境直接替换相同的模板内容来用;然而,在这以前,一直都是用的 sed 、 awk 、grep 之类的。突然有一天有个 yaml 文件,里面要替换的太多,sed 太麻烦,用这种方法,不知道要少写多少正则。。。
淡很少扯,我给你们伙上一个例子:shell
建立一个模板,在模板内直接写变量vim
vim a.model #This is app config model app_name=$name app_ip=$ip
shell 脚本直接替换变量bash
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
运行脚本后,查看生成的配置文件:app
cat rfile.conf #This is app config model app_name=bill_server app_ip=192.168.3.22
是否是很方便?若是有不少环境用同样的配置文件,用这个方法作配置文件,是否是很方便,只要把shell中的变量换成从外边传参,复制的文件也饿改为变量,就能够一下生成不少相同格式内容不一样的文件了。若是这个配置文件足够长,那么省了多少正则呢?ide