http://www.cnblogs.com/chengmo/archive/2010/10/02/1841355.html
在做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開頭進行聲明的變量
${[email protected]} 比對之前所有以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