在sed命令中引入shell变量
2014-03-08 11:02
501 查看
在目前的工作中经常会使用sed命令对游戏区服的配置文件进行版本号的替换,将旧的版本号替换成新的版本号,这里的版本号都是通过shell变量赋值所得,所以需要在sed语句中引入shell变量。
应用场景解析:
现有各个游戏服的配置文件app.conf.php中有以下字段
'hot_version' => 9, //游戏服每次更新资源的版本号
'hot_update_url' => 'http://cdn.xxx.com/ky1.7.1_9/' //下载资源的CDN地址
每次需要更新游戏资源的时候会从一个新文件hot_version.txt中去读取新的资源版本号
hot_version:10
每次更新游戏资源的时候,需要更改app.conf.php中的这两个字段,如将hot_version字段的9改成10,将ky1.7.1_9改成ky1.7.1_10
部分shell脚本内容如下:
version=1.7.1 //游戏服大版本号,每次游戏版本更新需要更改这个号码
hot_version_old=$(awk '/hot_version/{print $3}' app.conf.php|awk -F"," '{print $1}') //获取现有的资源版本号码,存入变量
hot_version_update=$(awk -F":" '{print $2}' hot_version.txt) //获取新的资源版本号,存入变量
sed -i -e "/hot_version/s/$hot_version_old/$hot_version_update/" -e "/hot_update_url/s/ky$version\_$hot_version_old/ky$version\_$hot_version_update/" app.conf.php //更改版本号
这里需要注意的是平时我们使用sed -i '/hot_version/s/9/10/' app.conf.php 这种只是替换数字或字符串的情况下使用单引号'即可。但是如果在sed要引入shell变量就需要使用双引号",并且这里$version_$hot_version中的短杠是用\转义的。之前由于没有加上\将-转义,多次更新资源版本号的时候CDN资源下载地址那段都没有替换成功。还有如果是$version.$hot_version的情况,中间的.不需要作转义。
本文出自 “Linux SA John” 博客,请务必保留此出处http://john88wang.blog.51cto.com/2165294/1370239
应用场景解析:
现有各个游戏服的配置文件app.conf.php中有以下字段
'hot_version' => 9, //游戏服每次更新资源的版本号
'hot_update_url' => 'http://cdn.xxx.com/ky1.7.1_9/' //下载资源的CDN地址
每次需要更新游戏资源的时候会从一个新文件hot_version.txt中去读取新的资源版本号
hot_version:10
每次更新游戏资源的时候,需要更改app.conf.php中的这两个字段,如将hot_version字段的9改成10,将ky1.7.1_9改成ky1.7.1_10
部分shell脚本内容如下:
version=1.7.1 //游戏服大版本号,每次游戏版本更新需要更改这个号码
hot_version_old=$(awk '/hot_version/{print $3}' app.conf.php|awk -F"," '{print $1}') //获取现有的资源版本号码,存入变量
hot_version_update=$(awk -F":" '{print $2}' hot_version.txt) //获取新的资源版本号,存入变量
sed -i -e "/hot_version/s/$hot_version_old/$hot_version_update/" -e "/hot_update_url/s/ky$version\_$hot_version_old/ky$version\_$hot_version_update/" app.conf.php //更改版本号
这里需要注意的是平时我们使用sed -i '/hot_version/s/9/10/' app.conf.php 这种只是替换数字或字符串的情况下使用单引号'即可。但是如果在sed要引入shell变量就需要使用双引号",并且这里$version_$hot_version中的短杠是用\转义的。之前由于没有加上\将-转义,多次更新资源版本号的时候CDN资源下载地址那段都没有替换成功。还有如果是$version.$hot_version的情况,中间的.不需要作转义。
本文出自 “Linux SA John” 博客,请务必保留此出处http://john88wang.blog.51cto.com/2165294/1370239
相关文章推荐
- 在sed中引入shell变量的四种方法
- linux下shell脚本中sed命令使用变量
- shell中向sed命令传递变量
- 在sed中引入shell变量的四种方法
- 在sed中引入shell变量的四种方法
- shell中向sed命令传递变量
- 在sed中引入shell变量的四种方法
- sed中引入shell变量
- shell ,sed命令用变量替换字符串,单引号改为双引号
- shell 文件中使用sed/cut/grep命令和变量
- sed命令 shell变量 特殊字符
- sed 引入shell变量
- sed引入shell变量的方法
- shell之sed命令删除变量中带有“日期时间等内容”的方法
- 单引号内引入变量 shell 命令输出赋值给变量,以及用变量替换命令
- Shell的sed命令
- shell中sed命令
- 一天一个shell命令 linux文本内容操作系列-sed命令详解
- 几种shell里的小括号,大括号结构和有括号的变量,命令的用法
- Shell之Sed命令-yellowcong