關於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
在這個模版中,URLS屬於我預設的鏡像URL可替換變量名,所以我的思路就是只需要將這個變量名替換成一個可用的URL地址即可使用該源,但是這時候誰也不知道要將這個URLS替換成什么
所以這時候就需要使用變量來解決了,一開始的想法是將不確定的URL賦值到變量U里面,然后執行下面的指令
sed "s/URLS/$U/g" dome.repo
然后提示錯誤了,於是我查了一下資料,得知這個SED指令可以自定義分隔符,因為 / 在shell中是有特殊的含義的,所以這時候只需要把這個符號換成其他的即可,比如#
這時候就神奇的成功了,然后試一下&
結果可見,涉及變量的時候只需要把斜杠換成其他符號即可