除了sed、awk等命令,shell也内置了一些字符串的操作,可以满足大部分需求,且速度会更快些,省去了调用命令的时间。
1. 字符串读值
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | - ${var}: 取值- ${var-DEFAULT}: 如果var没有被声明,那么就以DEFAULT作为其值
 - ${var:-DEFAULT}: 没被声明或为空,则以DEFAULT作为其值
 - ${var=DEFAULT}: 如果var没有被声明,那么就以DEFAULT作为其值
 - ${var:=DEFAULT}: 没被声明或为空,则以DEFAULT作为其值
 - ${var+OTHER}: 如果var声明了,那么其值就是$OTHER,否则就为null字符串
 - ${var:+OTHER}: 同上
 - ${var?ERR_MSG}: 如果var没有被声明,则打印ERR_MSG
 - ${var:?ERR_MSG}: 同上
 - ${!varprefix*}: 匹配之前所有以prefix开头的变量名称
 - ${!varprefix@}: 同上
 
 | 
2. 字符串操作
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 
 | - ${#string}: 长度- ${string:position}: 从position角标开始提取自字符串,角标从0开始
 - ${string:position:length}: 同上,同时限定长度
 - ${string:0-position:length}: 同上,从右边开始数,从1开始,最右字符是1
 - ${string#*substring}: 截取,保留substring右边字符,不包含substring,遇到第一个substring就截取
 - ${string##*substring}: 同上,遇到最后一个substring再截取,常用于URL,星号可通配任意个字符
 - ${string%substring*}: 从右侧开始截取,保留substring左侧字符,不包含substring,遇到第一个就截取
 - ${string%%substring*}: 同上,遇到最后一个再截取
 - ${string/substring/replacement}: 用replacement替换第一个substring
 - ${string//substring/replacement}: 同上,替换所有
 - ${string/#substring/replacement}: 如果string的前缀匹配substring,则用replacement替换substring
 - ${string/%substing/replacement}: 同上,换成后缀
 
 |