先上脚本,脚本的目的是虚拟机克隆-连接克隆,然后修改ip这个搞定,修改hostname就很简单了

declare oldip
declare -i Aname
declare newip
oldip=`cat /etc/sysconfig/network-scripts/ifcfg-ens32 | grep IPADDR= | cut -b 8-22`
read -p "请输入用户IP:" Aname
newip="192.168.1.$Aname"
echo "用户旧ip为:$oldip"
echo "用户新ip为:$newip"
sed -i 's/IPADDR='"$oldip"'/IPADDR='"$newip"'/g' /etc/sysconfig/network-scripts/ifcfg-ens32
cat /etc/sysconfig/network-scripts/ifcfg-ens32 | grep IPADDR

执行结果如下:

[root@fyc001 ~]# ./ipset.sh
请输入用户IP:19
用户旧ip为:192.168.1.18
用户新ip为:192.168.1.19
IPADDR=192.168.1.19

现在换为

sed -i "s/IPADDR=$oldip/IPADDR=$newip/g" /etc/sysconfig/network-scripts/ifcfg-ens32

执行结果不变,而原先的是

sed -i 's/IPADDR=$oldip/IPADDR=$newip/g' /etc/sysconfig/network-scripts/ifcfg-ens32

无法执行。

总结如下,参考资料

 1、sed命令使用双引号的情况下,可以使用$var(变量)直接引用:
  echo | sed "s/$RANDOM1/ $RANDOM2  /g" 

2、sed命令使用单引号的情况下,可以使用'"$var"'引用(单引号,然后双引号,变量):

  echo | sed 's/'"$RANDOM1"'/'" $RANDOM2 "' /g'

sed中执行外部命令。
  1、sed命令使用单引号的情况下使用'`shell command`'或者'$(shell command)'引用命令执行的结果:
  echo | sed 's/^/'`echo $RANDOM`'.rmvb_/g'
  7700.rmvb_# 结果
  # 上面的命令使用了旧式的命令替换,也可以采用新式的命令替换方法,如下:
  echo | sed 's/^/'$(echo $RANDOM)'.rmvb_/g'
  13856.rmvb_# 结果
  # 下面例子取用当前日期作为结果的一部分,如下:
  echo | sed 's/^/'$(date +"%Y%m%d")'.rmvb_/g'
  20130401.rmvb_ # 结果
  2、sed命令中使用双引号的情况下,直接`shell command`或者$(shell command)引用命令执行。
  echo | sed "s/^/$(date +"%Y%m%d").rmvb_/g"
  20130401.rmvb_# 结果
  # 使用环境变量$RANDOM以及旧式命令替换的例子:
  echo | sed "s/^/`echo $RANDOM`.rmvb_/g"
  29484.rmvb_# 结果
  总结一下
  在sed语句里面,变量替换或者执行shell命令,双引号比单引号少绕一些弯子;所以,sed和变量的关键词搜索的结果,众多都写上替换单引号为双引号。

sed 替换 引用变量值,记录一个自己学习错误的地方。的更多相关文章

  1. saltstack通过jinja模板,将变量值增加到配置文件中?通过引用变量值修改配置文件?

    需求描述: 在使用saltstack的时候,有的时候,需要根据不同的变量来增加配置,比如,bind,监听端口,这些都可以通过变量写入,并且在配置的时候引用,下面是一个例子,用来演示,如何使用jinja ...

  2. sed 替换多个空格为一个

    sed -i 's/[ ][ ]*/ /g'  file.txt

  3. jmeter后置处理器 JSON Extractor取多个变量值

    1.需要获取响应数据的请求右键添加-后置处理器-JSON Extractor 2.如果要获取json响应数据多个值时,设置的Variable names (后续引用变量值的变量名设置)与JSON Pa ...

  4. 记录一个bootstrap惨痛的错误

    记录一个bootstrap的错误,这个错误因为我删除了一个class就导致了页面上显示的错误,这是一个惨痛的教训,特此记录,提醒自己在做前端的修改时,一定要慎之又慎.如果真的要做改动,改完之后也要测一 ...

  5. MFC一个类访问另一个类成员对象的成员变量值

    MFC中一个类要访问另外一个类的的对象的成员变量值,这就需要获得原来那个类对象的指针,其实有好几种方法都可以实现. 比如维护一个单例模式.设置静态变量等等.我们这里举个列子,实现多个类之间的相互访问. ...

  6. MFC 一个类訪问还有一个类成员对象的成员变量值

    作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/35263857 MFC中一个类要訪问另外一个类的的对象的成员变量值,这就须要获得 ...

  7. 用配置文件里面的参数值替换yaml模板中的变量值【python】

    用配置文件里面的参数值替换yaml模板中的变量值[python] #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/9/20 1 ...

  8. memcpy造成其他变量值改变

        以前C/C++遇到过很多很多的问题,有时候费了很久很久时间,很大很大的努力才解决.但是都没有记录下来,现在想想以前的遇到的问题,只知道这样的事情发生过,至于是什么问题,一点印象都没有了.所以遇 ...

  9. ORACLE获取SQL绑定变量值的方法总结

      本文总结一下ORACLE数据库中如何获取SQL绑定变量值的方法,在SQL优化调优过程中,经常会用到这方面的知识点.在此梳理.总结一下,方面日后查找.翻阅. 方法1:查询V$SQL V$SQL视图中 ...

随机推荐

  1. CentOS7上安装google谷歌浏览器

      1.首先进入根目录,然后进入etc/yum.repos.d目录下,创建google-chrome.repo文件 cd / cd etc/yum.repos.d vim google-chrome. ...

  2. ajax中遇到无法发送的问题,以及收不到返回信息的问题

    1.在做ajax时,数据发送成功,后台确认了也返回了信息,但是怎么都在success里面接收不了,我遇见的造成的原因时因为dataType返回值类型错误造成的原因. var url = "请 ...

  3. UVALive-8077 Brick Walls 找规律

    题目链接:https://cn.vjudge.net/problem/UVALive-8077 题意 有一个用砖头磊起来的墙,现在又有一只蚂蚁,想沿着砖缝从起点跑到终点. 问最短路长度. 思路 找规律 ...

  4. [NOIP2012提高组]开车旅行

    题目:洛谷P1081.Vijos P1780.codevs1199. 题目大意:有n座海拔高度不相同的城市(编号1~n),两城市的距离就是两城市海拔之差.规定每次只能从编号小的城市走到编号大的城市. ...

  5. 【Python 学习】continue ,break 的使用

    # continue 跳出本轮循环并进入下一次循环# break 终止当前循环,跳出循环体 1. continue 使用案例 : for i in range(5): if i < 3: pri ...

  6. [luogu]P3572 [POI2014]PTA-Little Bird(单调队列)

    P3572 [POI2014]PTA-Little Bird 题目描述 In the Byteotian Line Forest there are nn trees in a row. On top ...

  7. android canvas 画图笔记

    android canvas 画图笔记 1.PathEffect类 画虚线 Paint p = new Paint(Paint.ANTI_ALIAS_FLAG); p.setStyle(Paint.S ...

  8. HDU 1521

    指数型生成函数.做这题时,回去看看组合数学才知道,指数生成函数求的就是多重集合的r排列数. #include <iostream> #include <cstdio> #inc ...

  9. c++变量的作用域、生存期和可见性

    局部变量 范围:在一个函数内部定义的变量,作用范围仅仅限于本函数体内. 生存期:程序运行到本函数才会给局部变量分配内存单元.函数运行完成局部变量所占的存储单元就被释放 全局变量 在函数体外部定义的变量 ...

  10. crm操作报价单实体

    using System;     using Microsoft.Xrm.Sdk;     using Microsoft.Crm.Sdk.Messages;     using Microsoft ...