shell腳本中對字符串的處理 shell
一、${#變量名}ide
做用:返回字符串的長度this
# foo="this is a test"spa
# echo ${#foo} //返回字符串foo的長度 索引
14ip
二、${變量名:offset:length}字符串
做用:截取字符串,length指定截取的長度,也能夠不寫;字符串的第一個字符的索引值爲0it
# foo="abcdefg"class
# echo ${foo:3:2} //從下標爲3的字符開始截取,共截取2個 test
de
# echo ${foo:3} //從下標爲3的字符開始截取到最後的字符
defg
三、${變量名#pattern} ${變量名##parttern}
pattern:模式,通配符表達式
做用:清除字符串中符合pattern的字符
# foo="file.txt.zip"
# echo ${foo#*.} //一個#號表明按照最短匹配清除
txt.zip
# echo ${foo##*.} //2個#號表明按照最長匹配清除
zip
四、${變量名%pattern} ${變量名%%parttern}
pattern:模式,通配符表達式
做用:清除字符串中符合pattern的字符,從字符串最後匹配
# echo $foo
file.txt.zip
# echo ${foo%.*} //1個%表明按照最短匹配
file.txt
# echo ${foo%%.*} //2個%%表明按照最長匹配
file
五、字符串替換操做
${變量名稱/old/new}
[root@localhost ~]# foo="mp3.txt.txt.mp3.avi"
[root@localhost ~]#
[root@localhost ~]# echo ${foo/txt/TXT}
mp3.TXT.txt.mp3.avi
[root@localhost ~]#
[root@localhost ~]# echo ${foo//txt/TXT}
mp3.TXT.TXT.mp3.avi
[root@localhost ~]# foo="txt.mp3.txt"
[root@localhost ~]#
[root@localhost ~]# echo ${foo/#txt/TXT}
TXT.mp3.txt
[root@localhost ~]# echo ${foo/%txt/TXT}
txt.mp3.TXT
六、實現大小寫字母的轉換
# foo="ABde"
# echo ${foo,,} //將字符串foo所有轉換成小寫
abde
# echo ${foo,} //將字符串foo的第1個字符轉換成小寫
aBde
# echo ${foo^} //將字符串foo的第1個字符轉換成大寫
ABde
# echo ${foo^^} //將字符串foo所有轉換爲大寫
ABDE