您好,登錄后才能下訂單哦!
這篇文章主要講解了“shell變量聲明的判斷以及字符串的操作詳解”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“shell變量聲明的判斷以及字符串的操作詳解”吧!
1、shell變量聲明的判斷
表達式 | 含義 |
---|---|
${var} | 變量var的值, 與$var相同 |
${var-DEFAULT} | 如果var沒有被聲明, 那么就以$DEFAULT作為其值 * |
${var:-DEFAULT} | 如果var沒有被聲明, 或者其值為空, 那么就以$DEFAULT作為其值 * |
${var=DEFAULT} | 如果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開頭進行聲明的變量 |
* 很簡單,大家試試就明白了,不多說,注意美元符號與左花括號之間不能存在空格,左花括號不能與變量名間存在空格,變量名不能與判斷符合間有空格。
2、字符串操作(長度獲取,讀取,匹配刪除,替換)
表達式 | 含義 |
---|---|
${#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 |
* 需要說明的是substring可以是正則表達式。
可替代命令:cut sed awk ,這三個是更為強大的字符串處理命令,能干關于字符串的非常多事情。這里有很多樣例介紹。
3、性能比較
time for i in $(seq 10000);do a=${#test};done;
time for i in $(seq 10000);do a=$(expr length $test);done;
代碼如下:
real 0m0.181s
user 0m0.170s
sys 0m0.000s
real 0m8.580s
user 0m2.497s
sys 0m6.075s
這里相當于循環調用awk、sed、cut、length等外部命令處理字符串,耗時是理所當然的。之前有篇說過shell優化問題,這里不再贅述,shell循環比awk慢非常多,這里的性能測試其實不太有實際意義,具體原因結合shell優化那篇看。
4、 字符串正則判斷
可以類似使用如下命令:
代碼如下:
if [[ "${lastday?ERR_MSG}" =~ "^[0-9]{4,4}-[0-9]{2,2}-[0-9]{2,2}$" ]]
then
...
fi
據說需要在bash版本3.0以上才能使用,查看bash版本方法為:bash -version ,查看當前解釋器種類命令:echo $0
感謝各位的閱讀,以上就是“shell變量聲明的判斷以及字符串的操作詳解”的內容了,經過本文的學習后,相信大家對shell變量聲明的判斷以及字符串的操作詳解這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。