linx下變量內容刪除與替換

    當一個變量被賦予值後,有時會對變量的值進行一些微小的調整,好比刪除變量值中特定一部份,或替換掉一個特色的字符等,以下以舉例來講明。
mysql

一、變量內容的刪除
sql

[root@bogon ~]# echo ${PATH} #呼叫出PATH變量的值
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin:/root/bin
[root@bogon ~]# echo ${PATH#/*bin:} #看見那個「#」符號,表示從變量「PATH」值的左邊開始向右邊刪除能匹配到「*bin:」的位置,僅刪除能匹配到最短的那個,因此輸出內容以下,「/usr/local/sbin:」被刪除了
/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin:/root/bin
[root@bogon ~]# echo ${PATH#*local/bin:}
/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin:/root/bin
[root@bogon ~]# echo ${PATH##/*bin:} #兩個「#」表示刪除能匹配到最長的那個,因此「/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin:」所有被刪除
/root/bin
[root@bogon ~]# echo ${PATH%:/*bin} #把上邊的「#」號換成「%」看看,表示從變量「PATH」值的右邊開始向左邊刪除能匹配到「*bin」的位置,僅刪除能匹配到最短的那個,因此「:/root/bin」被刪除
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin
[root@bogon ~]# echo ${PATH%%:/*bin} #兩個「%」與兩個「#」相似的道理
/usr/local/sbin

二、變量內容的替換
bash

[root@bogon ~]# echo ${PATH/sbin/SBIN/} #用「SBIN」替換「sbin」,但只替換第一次匹配到的
/usr/local/SBIN/:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin:/root/bin
[root@bogon ~]# echo ${PATH//sbin/SBIN/} #用「SBIN」替換「sbin」,全局替換
/usr/local/SBIN/:/usr/local/bin:/SBIN/:/bin:/usr/SBIN/:/usr/bin:/usr/local/mysql/bin:/root/bin

變量內容刪除與替換小結:ide


變量書寫方式 功能描述
${變量名稱#匹配字符} 若變量內容有被匹配到,剛從變量內容的左邊開刪除,但刪除匹配最短的
${變量名稱##匹配字符} 若變量內容有被匹配到,剛從變量內容的左邊開刪除,但刪除匹配最長的,可理解成此時工做在貪婪模式
${變量名稱%匹配字符} 若變量內容有被匹配到,剛從變量內容的右邊開刪除,但刪除匹配最短的
${變量名稱%%匹配字符} 若變量內容有被匹配到,剛從變量內容的右邊開刪除,但刪除匹配最長的,可理解成此時工做在貪婪模式
${變量稱/舊字符串/新字符串} 從變量內容的左邊開始匹配,用新字符串替換舊字符串,僅替換第一個匹配到的字符串
${變量稱//舊字符串/新字符串} 從變量內容的左邊開始匹配,用新字符串替換舊字符串,所有替換匹配到的字符串
相關文章
相關標籤/搜索