字符串的处理 1.字符串的截取 方法一,使用 ${}表达式 格式:${var:起始位置:长度} # Phone="13788768897" # echo ${#Phone} 11
使用${}方式截取字符串时,起始位置是从0开始的(和数组下标编号类似) # echo ${Phone:1:6} 378876

方法二,使用 expr substr 格式:expr substr "$var" 起始位置 长度 使用expr substr截取字符串时,起始编号从1开始,这个要注意与${}相区分。 # expr substr "$Phone" 1 6 137887

方式三,使用cut分割工具

格式:echo $var | cut -b 起始位置-结束位置

选项 -b 表示按字节截取字符,其中起始位置、结束位置都可以省略。当省略起始位置时,视为从第1个字符开始(编号也是从1开始,与expr类似),当省略结束位置时,视为截取到最后。 # echo $Phone | cut -b 1-6 137887 # echo $phone | cut -b 2,4,6,8 不连续截取 7679

2.字符串的替换 只替换第1个子串 格式:${var/old/new} # SCHOOL="Tarena IT Group" # echo ${SCHOOL/r/RRRR} TaRRRRena IT Group 替换全部子串 格式:${var//old/new} # echo ${SCHOOL//r/RRRR} TaRRRRena IT GRRRRoup

3.字符串的匹配删除 1)从左向右,最短匹配删除

格式:${变量名#*关键词}

删除从左侧第1个字符到最近的关键词“oo”的部分,* 作通配符理解: # echo $MAIL //确认变量 MAIL的值 /var/spool/mail/root # echo ${MAIL#*/} var/spool/mail/root

2)从左向右,最长匹配删除

格式:${变量名##*关键词}

删除从左侧第1个字符到最远的关键词“oo”的部分: # echo ${MAIL##oo} t # echo ${MAIL##/} root

3)从右向左,最短匹配删除

格式:${变量名%关键词*}

删除从右侧最后1个字符到往左最近的关键词“oo”的部分,* 做通配符理解 # echo ${MAIL%oo*} /var/spool/mail/r # echo ${MAIL%/*} /var/spool/mail

4)从右向左,最长匹配删除

格式:${变量名%%关键词*}

删除从右侧最后1个字符到往左最远的关键词“oo”的部分: # echo ${MAIL%%oo*} var/sp

4.字符串初值的处理 只取值,${var:-word} 若变量var已存在且非Null,则返回 $var 的值;否则返回字串“word”,原变量var的值不受影响 变量值已存在的情况 [root@svr5 ~]# echo $SCHOOL //查看原变量值 Tarena IT Group. [root@svr5 ~]# echo ${SCHOOL:-Tarena} //因SCHOOL已存在,输出变量SCHOOL的值 Tarena IT Group. [root@svr5 ~]# echo $SCHOOL //原变量的值并不改变 Tarena IT Group. 变量值不存在的情况:

[root@svr5 ~]# unset SCHOOL //清除SCHOOL变量 [root@svr5 ~]# echo ${SCHOOL:-Tarena} //因SCHOOL已不存在,输出“Tarena” Tarena [root@svr5 ~]# echo $SCHOOL //变量SCHOOL仍然不存在