标签:情况 连续 root 位置 脚本基础 表达 通配符 字符 影响
字符串的处理 # echo ${#Phone}
11
使用${}方式截取字符串时,起始位置是从0开始的(和数组下标编号类似)
378876
方法二,使用 expr substr
格式:expr substr "$var" 起始位置 长度
使用expr substr截取字符串时,起始编号从1开始,这个要注意与${}相区分。
137887
方式三,使用cut分割工具
格式:echo $var | cut -b 起始位置-结束位置
选项 -b 表示按字节截取字符,其中起始位置、结束位置都可以省略。当省略起始位置时,视为从第1个字符开始(编号也是从1开始,与expr类似),当省略结束位置时,视为截取到最后。
137887
# echo $phone | cut -b 2,4,6,8 不连续截取
7679
2.字符串的替换
只替换第1个子串
格式:${var/old/new}
# echo ${SCHOOL/r/RRRR}
TaRRRRena IT Group
替换全部子串
格式:${var//old/new}
TaRRRRena IT GRRRRoup
3.字符串的匹配删除
1)从左向右,最短匹配删除
格式:${变量名#*关键词}
删除从左侧第1个字符到最近的关键词“oo”的部分,* 作通配符理解:
/var/spool/mail/root
var/spool/mail/root
2)从左向右,最长匹配删除
格式:${变量名##*关键词}
删除从左侧第1个字符到最远的关键词“oo”的部分:
t
# echo ${MAIL##*/}
root
3)从右向左,最短匹配删除
格式:${变量名%关键词*}
删除从右侧最后1个字符到往左最近的关键词“oo”的部分,* 做通配符理解
/var/spool/mail/r
# echo ${MAIL%/*}
/var/spool/mail
4)从右向左,最长匹配删除
格式:${变量名%%关键词*}
删除从右侧最后1个字符到往左最远的关键词“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仍然不存在
标签:情况 连续 root 位置 脚本基础 表达 通配符 字符 影响
原文地址:http://blog.51cto.com/13594742/2069402