字符串处理
语法
说明
${变量名#匹配规则}
从变量 开头 进行规则匹配,将符合最 短 的数据删除
${变量名##匹配规则}
从变量 开头 进行规则匹配,将符合最 长 的数据删除
${变量名%匹配规则}
从变量 尾部 进行规则匹配,将符合最 短 的数据删除
${变量名%%匹配规则}
从变量 尾部 进行规则匹配,将符合最 长 的数据删除
${变量名/旧字符串/新字符串}
变量内容符合旧字符串,则 第一个 旧字符串会被新字符串替换
${变量名//旧字符串/新字符串}
变量内容符合旧字符串,则 所有 旧字符串会被新字符串替换
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 shell > A='I am 13.Haha 13.' shell > echo $A I am 13.Haha 13. shell > echo ${A#13} I am 13.Haha 13. shell > echo ${A#13*} I am 13.Haha 13. shell > echo ${A##13*} #需要注意匹配规则 I am 13.Haha 13. shell > echo ${A##*13} . shell > echo ${A#*13} .Haha 13. shell > echo ${A%*13} I am 13.Haha 13. shell > echo ${A%13*} I am 13.Haha shell > echo ${A%%13*} I am shell > echo ${A/13/zy} I am zy.Haha 13. shell > echo ${A//13/zy} I am zy.Haha zy.
计算字符串长度
语法
说明
方法一
${ #string}
此处大括号后的空格是因为hexo博客原因添加,实际使用无需空格,具体见实例
方法二
expr length “$string”
str有空格,则必须加双引号
1 2 3 shell > A='i am 13' shell > echo ${#A} 7
expr index $string $substring
查找是通过将 $substring 拆分成多个独立的字母,分别在 $string 中进行查找。返还有结果的最小值
1 2 3 4 5 6 7 8 9 10 11 12 13 shell > A='i am 13' shell > expr index "$A" am 3 shell > expr index "$A" 12a 3 shell > expr index "$A" a1m 3 shell > expr index "$A" m1a 3 shell > expr index "$A" m 4 shell > expr index "$A" m1a 3
expr match $string $substring
返回的是 匹配到的字串的长度, 不是该字符串本身。要想匹配成功字串, 这个字串必须是从头开始的, 子串从字符串首部开始才会匹配成功。如果不使用match要想匹配字串, 必须加冒号, 注意这个冒号是放在 字符串的外面的.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 shell > expr match "$A" 'i am' 4 shell > expr match "$A" 'i amasd' 0 shell > expr match "$A" i* 1 shell > expr match "$A" i.* 7 shell > expr match "$A" i. 2 shell > expr match "$A" i.. 3 shell > expr "$A" : i 1 shell > expr "$A" : i. 2
语法
说明
方法一
${string:position}
从$string中第n位开始,从0计数
方法二
${string:position:length}
从$string中第n位开始,长度为m
方法三
${string: -position}
从右边开始匹配,负号前边有空格
方法四
${string:(position)}
从左边开始匹配,可以是复数,没有空格
方法五
expr substr $string $position $length
如果字符串中有空格要用双引号将变量括起来。从1计数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 shell > expr index "$A" 'a' 3 shell > echo ${A:3} m 13 shell > echo ${A:3:2} m shell > echo ${A:3:3} m 1 shell > echo ${A: -1} 3 shell > echo ${A: (-1)} 3 shell > echo ${A:(-1)} 3 shell > echo ${A:(-4)} m 13 shell > echo ${A:(0)} i am 13 shell > echo ${A:(1)} am 13 shell > expr substr "$A" 3 3 am shell > expr substr $A 3 3 expr: syntax error