当前位置: 首页 > news >正文

Shell脚本中的命令会展开双引号中的变量但是单引号不行

文章目录

  • 前言
  • 问题出现
  • 解决办法
  • 总结

前言

昨晚测试到了半夜,算是凌晨提前过了个节,既然是过节了,就不正那么复杂的知识了,记录一个最近发现的小知识点,本来没什么,但AI告诉的错误的原因后有种恍然大明白的感觉,一起快速看一下

问题出现

本来有个脚本用于替换配置文件中的数据,在部署前确保配置变量的正确性,其中是用 sed 命令实现,使用方法很简单,假如有 example.txt 文件,内容如下:

$ cat example.txt
<Property Port="3987">

假如把文件中的Port换成Bind,写法很简单

$ sed 's/Port/Bind/g' example.txt
<Property Bind="3987" balabala>

如果被替换的值是通过变量传递到脚本中的也是没问题的

$ newval=Bind2$ sed "s/Port/$newval/g" example.txt
<Property Bind2="3987" balabala>

如果想替换其中的数字,但是文件中的数字很多,可能存在多个3987,不能直接替换,需要写的更具体一点

比如把 Port=“3987” 换成 Port=“3988”

初步写法是这样 sed "s/Port="[^"]*"/Port="$newval"/g" example.txt 但肯定不行,因为引号乱套了,一执行就报错,所以改成了单引号

$ sed 's/Port="[^"]*"/Port="$newval"/g' example.txt
<Property Port="$newval" balabala>

这次不报错了,但是结果不对了,这也就是我遇到的小问题

解决办法

要想找解决办法首先得知道原因,其实在标题中已经说过了,一个变量要想被展开需要放到双引号中,在单引号中是不行的,sed命令后面需要改为双引号,那怎么解决呢?

把命令中的双引号转义一下就行了

$ newnum=3988$ sed "s/Port=\"[^\"]*\"/Port=\"$newnum\"/g" example.txt
<Property Port="3988" balabala>

好了,到此就完美解决了,再解释下这个替换正则表达

  • Port= 匹配文本中出现的字符串 Port=
  • \" 匹配一个双引号 ", 因为在命令中双引号需要转义
  • [^\"]*匹配 任意数量非双引号字符(即双引号内的内容)
  • \" 再匹配结尾的那个引号

整体意思是匹配类似于 Port="任意内容"

总结

  • Shell脚本中如要想在文本中展开一个变量使用双引号包裹,单引号没有这个作用
  • 1024节日快乐

==>> 反爬链接,请勿点击,原地爆炸,概不负责!<<==

茫茫人生路,无时无刻不在前进,你往前迈一步是前进,往后迈一步也是前进,你又有什么办法退回去呢,不过是被推着走罢了,向前推或者向后推,反正时间在流逝

http://www.dtcms.com/a/526696.html

相关文章:

  • 东营有什么网站建设公司工程建设合同模板
  • 建立石墨碳素网站怎么做对于网站建设提出建议
  • 沧州有做网站的吗广州网站推广运营
  • 怀化同城网站莱芜网站网站建设
  • 哈尔滨网站建设咨询wordpress中国可以用吗
  • 什么网站可以发布有偿做项目中国建筑招聘官方网站
  • 广州哪里做网站建设部网标准下载网站
  • 网站开发赚不赚钱wordpress 首页链接
  • 本地做网站图片怎么存网站开发费用如何入帐
  • jsp网站开发实例标题栏虚拟主机wordpress多站点
  • 程序开源网站vs和dw做网站的区别
  • 网站标题前的小图标怎么做银川网站建设那家好
  • 南京做网站开发 待遇做360网站官网还是百度知道
  • 网站怎么吸引流量做网站创业故事
  • 网站建设推广找stso88效果好锦州网站建设渠道
  • 四川手机网站建设公司海南住房建设厅定额网站
  • 网站建设1993seowordpress制作单页
  • 网站入侵怎么做简述建设网站的步骤
  • PHP做的哪些大型网站如何做网络营销推广 咨询时代达信(深圳)科技有限公司
  • 网站打开慢怎么回事啊专用车网站建设多少钱
  • 花都网站建设信科网络长春市防疫最新消息数据
  • 吴江城乡住房和城乡建设局网站如何做网站逻辑结构图
  • 惠州城乡规划建设局网站公司网站制作的教程
  • 深圳 购物商城网站建设怎么搭建网站 优帮云
  • 中式设计网站推荐免费企业信息黄页网
  • 重庆最火的网站网站公司好做吗
  • 建设一个网站首先需要阿里云网站建设方案
  • 【C++】异步操作
  • 网站做推广团队郑州seo技术外包
  • 企业网站建设商城百度做的网站国外可以打开吗