除了sed、awk等命令,shell也内置了一些字符串的操作,可以满足大部分需求,且速度会更快些,省去了调用命令的时间。
1. 字符串读值
1 2 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. 字符串操作
1 2 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}: 同上,换成后缀
|