濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > shell字符串操作詳解

shell字符串操作詳解

熱門標(biāo)簽:地圖標(biāo)注員都是年輕人 揭陽智能電話機(jī)器人推薦 河南信譽(yù)好的不封卡電話外呼系統(tǒng) 百度地圖標(biāo)注錯(cuò)了有責(zé)任嗎 客服外呼系統(tǒng)怎么樣 江蘇云電銷機(jī)器人公司 華鋒e路航港口地圖標(biāo)注 打電話機(jī)器人接我是他的秘書 如果做線上地圖標(biāo)注
1、shell變量聲明的判斷

表達(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;

復(fù)制代碼 代碼如下:

real 0m0.181s
user 0m0.170s
sys 0m0.000s

real 0m8.580s
user 0m2.497s
sys 0m6.075s


這里相當(dāng)于循環(huán)調(diào)用awk、sed、cut、length等外部命令處理字符串,耗時(shí)是理所當(dāng)然的。之前有篇說過shell優(yōu)化問題,這里不再贅述,shell循環(huán)比awk慢非常多,這里的性能測(cè)試其實(shí)不太有實(shí)際意義,具體原因結(jié)合shell優(yōu)化那篇看。

4、 字符串正則判斷
可以類似使用如下命令:

復(fù)制代碼 代碼如下:

if [[ "${lastday?ERR_MSG}" =~ "^[0-9]{4,4}-[0-9]{2,2}-[0-9]{2,2}$" ]]
then
...
fi


據(jù)說需要在bash版本3.0以上才能使用,查看bash版本方法為:bash -version ,查看當(dāng)前解釋器種類命令:echo $0

您可能感興趣的文章:
  • shell字符串比較判斷是否為數(shù)字
  • Shell字符串截取的詳細(xì)方法

標(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)。
  • 相關(guān)文章
  • 下面列出與本文章《shell字符串操作詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于shell字符串操作詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    泗水县| 台湾省| 景东| 盐边县| 锡林浩特市| 贺兰县| 南汇区| 灵丘县| 旬阳县| 文化| 蓬莱市| 长丰县| 保定市| 曲水县| 宝应县| 华蓥市| 洪泽县| 河池市| 五河县| 个旧市| 溧阳市| 湖州市| 双牌县| 兴海县| 夏邑县| 玉树县| 鄂托克旗| 寿宁县| 通化市| 饶河县| 绩溪县| 鱼台县| 都江堰市| 华坪县| 荥阳市| 大名县| 邵武市| 襄垣县| 中阳县| 普格县| 息烽县|