Shell入门(三)之字符串
字符串可以用單引號,也可以用雙引號,也可以不用引號。單雙引號的區別跟PHP類似。
單引號不存在轉義字符,如:\a,\n,$abc
#!/bin/bash a='abc' b='${a}bc'; echo $b; #結果為:${a}bc單引號字符串的限制:
(1)單引號里的任何字符都會原樣輸出,單引號字符串中的變量是無效的;
(2)單引號字串中不能出現單引號(對單引號使用轉義符后也不行)。
?
二、雙引號
雙引號的優點:
(1)雙引號里可以有變量
(2)雙引號里可以出現轉義字符
#!/bin/bash a="abc" b="${a}bc"; echo $b; #結果為:$abcbc?
三、字符串連接
#!/bin/bash a="abc" b=$a"d" c=$b'e' echo $a $b $c?
四、字符串長度
${#string}獲取長度
`expr?length 字符串` ??字符串可以加'或" ,其中"適用于所有字符,包括轉義字符,變量
?注意使用的是反引號 ` 而不是單引號 '
#!/bin/bash a='abc' echo ${#a} #3 echo `expr length "字符串"` #9 中文占3個字節?
五、提取子字符串
${string:start} ? ??從字符串第?start?個字符開始截取到字符串末尾,下標從0開始
${string:start:length} ?從字符串第?start?個字符開始截取 length個字符,下標從0開始
${string:0-start} ? ??從字符串倒數第?start?個字符開始截取到字符串末尾
${string:0-start:length} ?從字符串倒數第?start?個字符向右開始截取?length個字符
?
`expr?substr 字符串 start ?length` ?下標從1開始,字符串可以加'或" ,其中"適用于所有字符,包括轉義字符,變量
#!/bin/bash a='abcdefg' echo ${a:2} #cdefg echo ${a:2:2} #cd echo ${a:0-1} #g echo ${a:0-5:4} #cdef echo `expr substr "$a" 1 2` #ab?
六、在字符串查找字符
下標從1開始,查找不到返回0
`expr index 字符串 匹配字符`
?
字符串與匹配字符都可以加'或" ,其中"適用于所有字符,包括轉義字符,變量
#!/bin/bash a='welcome to learn shell' echo `expr index "$a" co` #4 b='b' echo `expr index b字符串 匹配字符` #2 echo `expr index "b字符串" '匹配字符'` #2 echo `expr index "b字符串" "${b}匹配字符"` #1?
七、正則匹配
`expr match?字符串 匹配字符串` ? ? 匹配字符串開頭的子串,返回匹配到的子串的長度,若找不到則返回0
字符串與匹配字符串都可以加'或" ,其中"適用于所有字符,包括轉義字符,變量
#!/bin/bash a='welcome to learn shell' echo `expr match "$a" w.*a` #14 echo `expr match "$a" e.*a` #0 盡管字符串包含e.*a,但不以w開頭?
八、刪除 ?支持通配符*與?、+等
${string#刪除子串} ? ? 刪除左邊最小的匹配string開頭的子串
${string##刪除子串} ? 刪除左邊最大的匹配string開頭的子串
${string%刪除子串} ? ? 刪除右邊最小的匹配string末尾的子串
${string%%刪除子串} ? 刪除右邊最大的匹配string末尾的子串
#!/bin/bash a='welcome to learn shell' echo ${a#e*e} #welcome to learn shell 沒有匹配$a的開頭 echo ${a#w*e} #lcome to learn shell echo ${a##w*e} #ll echo ${a%e*l} #welcome to learn sh echo ${a%%e*l} #w?
九、替換 ?支持通配符*與?、+等
${string/被替換串/替換串}
${string//被替換串/替換串}
#!/bin/bash a='welcome on welcome' echo ${a/e*c/x} #wxome echo ${a/e*c/x} #wxome echo ${a//el/a} #wacome on wacome?
總結
以上是生活随笔為你收集整理的Shell入门(三)之字符串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Shell入门(二)之变量
- 下一篇: Shell入门(四)之数组