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中的变量换成从外边传参,复制的文件也饿改成变量,就可以一下生成很多相同格式内容不同的文件了。如果这个配置文件足够长,那么省了多少正则呢?

原文地址:http://blog.51cto.com/rsddn/2085892

时间: 2024-08-29 19:54:17

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

java 成员变量、局部变量、静态变量、类变量、非静态变量、实例变量、向前引用、非法向前引用、静态代码块、非静态代码块

①java类的成员变量有俩种: 一种是被static关键字修饰的变量,叫类变量或者静态变量 另一种没有static修饰,为成员变量 ②通俗点说: 类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享.静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期. 而实例变量取决于类的实例.每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期. 注意点: 1.JAVA中初始化

shell语法—shell 定义变量及调用变量

可执行文件开头第一行一般我们会指定用什么解释器来执行该文件比如shell脚本的文件开头一般会加#!/bin/sh 运行shell 是会遇到三种变量 1.局部变量,在脚本或命令中定义,仅在当前shell实例中有效,其他shell 启动的程序不能访问局部变量. 2.环境变量,所以的程序,包括shell启动的程序,都能当问环境变量,有些程序需要环境变量来保证其正常运行,必要的时候shell脚本也可以定义环境变量. 3.shell变量,是有shell程序设置的特殊变量,shell变量中有一部分是环境变量

WP主题模板制作修改教程

WP主题模板制作修改教程 实际上,当我们打开某个主题的文件夹时,看到的并不止这两个文件,而是更多.但一般来说,在一个完整的 WP 主题文件夹中都应该包含下列文件(也称为模板文件):页面 模板文件 用途首页 index.php 显示网站首页单页 single.php 显示博文的页面(相当于细节页)静态页 page.php 显示静态页的页面(包含各级静态页面)分类页 category.php 显示分类页的页面(相当于栏目页)存档页 archive.php 显示存档页的页面(相当于按时间归类的栏目页)

ecshop模板如何修改详细图解

ECSHOP模板修改需要会DIV CSS知识.还有就是DWT,LBI文件的意义,熟记以下一些模板程序有助于修改模板,更多好看的模板也可以看看“ecshop模板堂” 模板文件说明style.css   -  模板所使用样式表activity.dwt  -  活动列表article.dwt   -  文章内容页article_cat.dwt   -  文章列表页article_pro.dwt  -  前一篇文章auction.dwt  -  拍卖商品首页auction_list.dwt  -  拍卖

类模板,多种类型的类模板,自定义类模板,类模板的默认类型,数组的模板实现,友元和类模板,友元函数,类模板与静态变量,类模板与普通类之间互相继承,类模板作为模板参数,类嵌套,类模板嵌套,类包装器

 1.第一个最简单的类模板案例 #include "mainwindow.h" #include <QApplication> #include <QPushButton> #include <QLabel> template<class T> class run { public: T w; void show() { w.show(); } void settext() { w.setText("A"); }

Django(七)—— 模板层:变量、过滤器、标签、自定义标签和过滤器

模板层:变量.过滤器.标签.自定义标签和过滤器 将页面的设计和Python的代码分离开会更干净简洁更容易维护. 我们可以使用 Django的 模板系统 (Template System)来实现这种模式 # django模板修改的视图函数 def current_time(req): from django.template import Template,Context now=datetime.datetime.now() t=Template('<html><body>现在时刻

shell实战:内置(built-in)变量

shell领域内,变量的作用不言而喻. 内置变量,是不需要在程序中声明,就自动存在的,随时可以访问. Shell 的环境变量分为 set, env 两种,其中 set 变量可以通过 export 工具导入到 env 变量中.其中,set 是显示设置shell变量,仅在本 shell 中有效:env 是显示设置用户环境变量 ,仅在当前会话中有效.换句话说,set 变量里包含了 env 变量,但 set 变量不一定都是 env 变量.这两种变量不同之处在于变量的作用域不同.显然,env 变量的作用域

PHP Smarty 模板 读取配置文件变量

配置文件 预备知识 可以让设计者将全局的模板变量以文件形式管理起来. 其中一个例子是管理模板的颜色值: 通常如果你需要从程序中更改颜色主题,那么你需要找到每个模板文件, 并且修改它们的颜色值. 通过配置文件,颜色值被统一放置到配置文件内,你只需要修改这个文件即可. # global variables pageTitle = "Main Menu" bodyBgColor = #000000 tableBgColor = #000000 rowBgColor = #00ff00 [Cu

C# 使用IEnumerable,yield 返回结果,同时使用foreach时,在循环内修改变量的值无效

在项目中遇到了一个比较奇怪的问题,在foreach循环中修改列表的值后没有生效,后面使用时还是获取列表时的值,原因是因为使用了 yield return .下面让我们来探究下其中的原因: 首先来看下 yield return 官方的解释 使用 yield return 语句可一次返回一个元素.通过 foreach 语句或 LINQ 查询来使用迭代器方法. foreach 循环的每次迭代都会调用迭代器方法. 迭代器方法运行到 yield return 语句时,会返回一个 expression,并保