计算字符串长度
语法 | 说明 | |
方法一 | ${#string} |
无 |
方法二 | expr length"$string" |
string有空格,必须加双引号 |
# 输出var1字符串的长度 var1="I love you,Do you love me" echo ${#var1} # 第二种方法,注意要加上`这个符号 echo `expr length "$var1"` # 如果写成下面这种,那么输出就变味了 echo expr length "$var1" # 输出 expr length I love you,Do you love me
获取字符索引位置
方法: expr index"$string"substr
这也是个坑啊,这个获取的是字符在字符串出现的位置,而不是substr子串在字符串中出现的位置。子串substr会被切割成单个字符,先在字符串string中找到哪个字符的位置,就先返回哪个数字
var1="I love you,Do you love me" var2="e me" # var2会被拆分成"e"," ","m","e" echo `expr index "$var1" "$var2"` # 输出结果为 2
获取子串的长度
方法: expr match"$string"substr
这个方法会从字符串的起始位置开始匹配子串,这个实际生产过程中使用的并不是太多。
var1="I love you,Do you love me" var2="I love.*o" echo `expr match "$string" substr` # 输出结果为 20
抽取字符串中的子串
语法 | 说明 | |
方法一 | ${string:position} |
从string中的position开始 |
方法二 | ${string:position:length} |
从position开始,匹配长度为length,索引起始位置为0 |
方法三 | ${string:-positon} |
从右边开始匹配 |
方法四 | ${string:(position)} |
从左边开始匹配 |
方法五 | expr substr $string $position $length |
从position开始,匹配长度为length,索引起始位置为1 |
var1="I love you,Do you love me" echo ${var1:12} #输出 o you love me echo ${var1: -5} #注意冒号和负号之间有空格 输出 ve me echo ${var1:(-5)} #加括号时不需要加空格 # 下面的方法,索引位置从0开始,输出结果 ,Do yo echo ${var1:10:6} # 下面的方法,索引位置从1开始的,输出结果 u,Do y echo `expr substr "var1" 10 6`