2022
我们一起努力

在sed命令中引入shell变量(sed命令引用变量)

在目前的工作中经常会使用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的情况,中间的.不需要作转义。

本文从互联网转载,来源地址:www.downzz.com/shell/17959.html,原作者保留一切权利,若侵权或引用不当,请联系茶猫云(cmy.cn)删除。【茶猫云,优质云服务器提供商】

赞(0)
文章名称:《在sed命令中引入shell变量(sed命令引用变量)》
文章链接:https://www.fzvps.com/35617.html
本站文章来源于互联网,如有侵权,请联系管理删除,本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
图片版权归属各自创作者所有,图片水印出于防止被无耻之徒盗取劳动成果的目的。

评论 抢沙发

评论前必须登录!