Shell腳本使用sed命令時遇到變量的一些解決方案


關於SED命令我就不多說了,下面奉上我的例子

在寫腳本配置YUM源的時候,總是以多多益善的想法為主,所以這時候就需要制定一個模版了,下面奉上我的Centos7源的模版

[base]
name=CentOS-$releasever - Base - URLS
failovermethod=priority
baseurl=URLS/centos/$releasever/os/$basearch/
        URLS/centos/$releasever/os/$basearch/
        URLS/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=URLS/centos/RPM-GPG-KEY-CentOS-7
 
#released updates 
[updates]
name=CentOS-$releasever - Updates - URLS
failovermethod=priority
baseurl=URLS/centos/$releasever/updates/$basearch/
        URLS/centos/$releasever/updates/$basearch/
        URLS/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=URLS/centos/RPM-GPG-KEY-CentOS-7
 
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - URLS
failovermethod=priority
baseurl=URLS/centos/$releasever/extras/$basearch/
        URLS/centos/$releasever/extras/$basearch/
        URLS/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=URLS/centos/RPM-GPG-KEY-CentOS-7
 
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - URLS
failovermethod=priority
baseurl=URLS/centos/$releasever/centosplus/$basearch/
        URLS/centos/$releasever/centosplus/$basearch/
        URLS/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=URLS/centos/RPM-GPG-KEY-CentOS-7
 
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - URLS
failovermethod=priority
baseurl=URLS/centos/$releasever/contrib/$basearch/
        URLS/centos/$releasever/contrib/$basearch/
        URLS/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=URLS/centos/RPM-GPG-KEY-CentOS-7
Centos7源模版

在這個模版中,URLS屬於我預設的鏡像URL可替換變量名,所以我的思路就是只需要將這個變量名替換成一個可用的URL地址即可使用該源,但是這時候誰也不知道要將這個URLS替換成什么

所以這時候就需要使用變量來解決了,一開始的想法是將不確定的URL賦值到變量U里面,然后執行下面的指令

 

sed "s/URLS/$U/g" dome.repo

 

 

 然后提示錯誤了,於是我查了一下資料,得知這個SED指令可以自定義分隔符,因為   在shell中是有特殊的含義的,所以這時候只需要把這個符號換成其他的即可,比如#

 

 這時候就神奇的成功了,然后試一下&

 

 結果可見,涉及變量的時候只需要把斜杠換成其他符號即可

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM