${...}在字符串中有很是多的用法:python
一、${var}正則表達式
限定變量。.net
若是一個變量名A是另外一個變量名AB的前部分,那麼,若是要在AB相連時,要獲得A的值,就必須使用${var}限定。blog
若是變量名不會產生歧義時(即獨立的變量名),${var}與$var沒有任何區別。索引
var="hello"字符串
var_01="hello01"變量
echo $var $var_01 ${var}_01協議
>>> hello hello01 hello_01字符
二、${#var}path
獲得變量var的長度
var="hello"
echo ${#var}
>>> 5
三、${var#}
刪除變量首部的字符(串),
"#"後面的能夠是字面串,也能夠是正則表達式(惰性匹配)。
var="hello"
echo ${var#he}
>>> llo
var="/res_pos/path/from/something"
echo ${var#/}
>>> res_pos/path/from/something # 刪除第一個"/"
echo ${var#/*/}
>>> path/from/something # 刪除首部匹配"/*/"的串,即"/res_pos/"
四、${var##}
刪除變量首部的字符(串),
只是,當使用2個"##"時,匹配是貪婪的(貪婪匹配,也就是儘量多的匹配)。
echo ${var##/*/}
>>> something # 刪除首部匹配"/*/"的串,即"/res_pos/path/from/"。
五、${var%}
刪除變量尾部的字符(串),
"%"後面的能夠是字面串,也能夠是正則表達式(惰性匹配)。
var="hello"
echo ${var%llo}
>>> he
var="~/res_pos/path/from/something"
echo ${var%/*}
>>> ~/res_pos/path/from # 刪除尾部的"/something"
六、${var%%}
刪除變量尾部的字符(串),
只是,當使用2個"%%"時,匹配是貪婪的(對應於第4條)
var="~/res_pos/path/from/something"
echo ${var%/*}
>>> ~ # 刪除第一個的"/"後的全部全部內容(包括"/"),貪婪匹配中,"/*"就是"/"後的全部字符串
七、${var::}
跟python的切片概念類似,取變量var的起始索引,
指定長度的子串(${var:索引:長度})。
var="~/res_pos/path/from/something"
echo ${var:0:5}
>>> ~/res
echo ${var:1:5}
>>> /res_ # 可見,字符串的索引是從0開始的
echo ${var::5}
>>> ~/res # 省略"索引",默認爲從0開始
echo ${var:1:}
>>> # 省略"長度",默認長度爲0,因此輸出爲空
八、${var//}
字符串替換。
將var中的字符串A替換成字符串B(${var/A/B})。
var="hello world"
echo ${var/hello/hi}
>>> hi world # 字符串"hello"替換成了"hi"
echo ${var/l/X}
>>> heXlo world # 第一個"l"替換成了"X"
九、${var///}
字符串替換,
與第8點相同,只不過,如今是將全部出現的串A替換成串B(${var//A/B})。
var="hello world"
echo ${var//l/X}
>>> heXXo worXd # 全部的"l"都替換成了"X"
十、${var/#/}
替換字符串首部的串A爲串B,
(${var/#A/B}),與第8點不一樣的是,這裏只替換首部的串A。
var="hello world. hello baby."
echo ${var//h/H}
>>> Hello world. Hello baby. # 將全部"h"替換成了"H"
echo ${var/#h/H}
>>> Hello world. hello baby. # 將首部的"h"替換成了"H"
echo ${var/e/E}
>>> hEllo world. hello baby. # 將第一個出現的"e"替換成了"E"
echo ${var/#e/E}
>>> hello world. hello baby. # 首字符不是"e",因此沒有進行任何替換,原樣輸出。
十一、${var/%/}
替換字符串尾部的串A爲串B,
(${var/%A/B}),與第10點類似,只是這是處理的是字符串尾。
var="hello hello"
echo ${var/%o/END}
>>> hello hellEND # 將尾部的字符"o",替換成了"END"。————————————————版權聲明:本文爲CSDN博主「李老客兒」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。原文連接:https://blog.csdn.net/lihonghai2392/article/details/77868445