表達(dá)式 | 含義 |
---|---|
${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被設(shè)置了, 那么其值就是$OTHER, 否則就為null字符串 |
${var?ERR_MSG} | 如果var沒被聲明, 那么就打印$ERR_MSG * |
${var:?ERR_MSG} | 如果var沒被設(shè)置, 那么就打印$ERR_MSG * |
${!varprefix*} | 匹配之前所有以varprefix開頭進(jìn)行聲明的變量 |
${!varprefix@} | 匹配之前所有以varprefix開頭進(jìn)行聲明的變量 |
* 很簡(jiǎn)單,大家試試就明白了,不多說,注意美元符號(hào)與左花括號(hào)之間不能存在空格,左花括號(hào)不能與變量名間存在空格,變量名不能與判斷符合間有空格。
2、字符串操作(長(zhǎng)度獲取,讀取,匹配刪除,替換)
表達(dá)式 | 含義 |
---|---|
${#string} | $string的長(zhǎng)度 |
${string:position} | 在$string中, 從位置$position開始提取子串 |
${string:position:length} | 在$string中, 從位置$position開始提取長(zhǎng)度為$length的子串 |
${string#substring} | 從變量$string的開頭, 刪除最短匹配$substring的子串 |
${string##substring} | 從變量$string的開頭, 刪除最長(zhǎng)匹配$substring的子串 |
${string%substring} | 從變量$string的結(jié)尾, 刪除最短匹配$substring的子串 |
${string%%substring} | 從變量$string的結(jié)尾, 刪除最長(zhǎng)匹配$substring的子串 |
${string/substring/replacement} | 使用$replacement, 來代替第一個(gè)匹配的$substring |
${string//substring/replacement} | 使用$replacement, 代替所有匹配的$substring |
${string/#substring/replacement} | 如果$string的前綴匹配$substring, 那么就用$replacement來代替匹配到的$substring |
${string/%substring/replacement} | 如果$string的后綴匹配$substring, 那么就用$replacement來代替匹配到的$substring |
* 需要說明的是substring可以是正則表達(dá)式。
可替代命令:cut sed awk ,這三個(gè)是更為強(qiáng)大的字符串處理命令,能干關(guān)于字符串的非常多事情。這里有很多樣例介紹。
3、性能比較
time for i in $(seq 10000);do a=${#test};done;
time for i in $(seq 10000);do a=$(expr length $test);done;
標(biāo)簽:婁底 金昌 許昌 邵陽 赤峰 馬鞍山 巴彥淖爾 淘寶邀評(píng)
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《shell字符串操作詳解》,本文關(guān)鍵詞 shell,字符串,操作,詳解,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。