shell脚本中对字符串的处理


1、${#变量名}


作用:返回字符串的长度

# foo="this is a test"

# echo ${#foo}           //返回字符串foo的长度          

14



2、${变量名:offset:length}


作用:截取字符串,length指定截取的长度,也可以不写;字符串的第一个字符的索引值为0

# foo="abcdefg"

# echo ${foo:3:2}     //从下标为3的字符开始截取,共截取2个     

de

# echo ${foo:3}       //从下标为3的字符开始截取到最后的字符     

defg




3、${变量名#pattern}    ${变量名##parttern}


pattern:模式,通配符表达式

作用:清除字符串中符合pattern的字符


# foo="file.txt.zip"

# echo ${foo#*.}          //一个#号代表按照最短匹配清除

txt.zip

# echo ${foo##*.}         //2个#号代表按照最长匹配清除

zip


4、${变量名%pattern}    ${变量名%%parttern}

pattern:模式,通配符表达式

作用:清除字符串中符合pattern的字符,从字符串最后匹配

# echo $foo

file.txt.zip

# echo ${foo%.*}              //1个%代表按照最短匹配

file.txt

# echo ${foo%%.*}           //2个%%代表按照最长匹配

file



5、字符串替换操作


${变量名称/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



6、实现大小写字母的转换


# foo="ABde"

# echo ${foo,,}      //将字符串foo全部转换成小写        

abde

# echo ${foo,}       //将字符串foo的第1个字符转换成小写

aBde

# echo ${foo^}      //将字符串foo的第1个字符转换成大写 

ABde

# echo ${foo^^}     //将字符串foo全部转换为大写         

ABDE