在做shell批次程式時候,經常會涉及到字串相關操作。
有很多命令語句,如:awk,sed都可以做字串各種操作。
其實shell內建一系列操作符號,可以達到類似效果,
大家知道,使用內部操作符會省略啟動外部程式等待時間,
因此速度會非常的快。
一、判斷讀取字串值
運算式 含義
${var} 變數var的值,與$var相同
${var-DEFAULT} 如果var沒有被聲明,那麼就以$DEFAULT作為其值
${var:-DEFAULT} 如果var沒有被聲明,或者其值為空白,那麼就以$DEFAULT作為其值
${var=DEAULT} 如果var沒有被聲明,那麼就以$DEFAULT作為其值
${var:=DEFAULT} 如果var沒有被聲明,或者其值為空白,那麼就以$DEFAULT作為其值
${var+OTHER} 如果var聲明了,那麼其職就是$OTHER,否則就為NULL字串
${var:+OTHER} 如果var被設定了,那麼其值就是$OTHER,否則就為NULL字串
${var?ERR_MSG} 如果var沒被聲明,那麼就列印$ERR_MSG
${var:?ERR_MSG} 如果var沒被設定,那麼就列印$ERR_MSG
${!varprefix*} 匹配之前所有以varprefix開頭進行聲明的變數
${!varprefix@} 匹配之前所有以varprefix開頭進行聲明的變數
二、字串操作(長度、讀取、替換)
${#string} $string的長度
${string:position} 在$string中,從位置$position開始提取子串
${string:position:length} 在$string中,從位置$position開始提取長度為$length的子串
${string#substring} 從變數$string的開頭,刪除最短匹配$substring的子串
${string##substring} 從變數$string的開頭,刪除最長相符$substring的子串
${string%substring} 從變數$string的結尾,刪除最短匹配$substring的子串
${string%%substring} 從變數$string的結尾,刪除最長相符$substring的子串
${string/substring/replacement} 使用$replacement,來代替第一個匹配的$substring
${string//substring/replacement} 使用$replacement,代替所有匹配的$substring
${string/#substring/replacement} 如果$string的首碼匹配$substring,那麼就用$replacement來代替匹配到的$substring
${string/%substring/replacement} 如果$string的尾碼匹配$substring,那麼就用$replacement來代替匹配到的$substring
本文出自“張立斌”