1.取长度

str="abc abc 123 123"

1)expr length “$str”

2)expr "$str" : ".*"

3) echo ${#str}

建议使用第三种,因为第一种如果要操作含有空格类的字符串,需要带上双引号,或者定义环境变量IFS='',IFS默认是空格, 第二种写起来不方便。


2.查找字串的位置

str="abc abc 123 123"

expr index "$str" "a" #位置从1开始,记得带上双引号


3.截取子串

str="abc abc 123 123"

1)expr substr "$str" 1 4 #位置从1开始计数,记得带上双引号

2) echo ${str:0:3} #位置从0开始计数

3)echo ${str:0} #截取到最后

4) echo ${str:(-3):3} #从倒数第三个开始,截取三个

5)echo ${str#a*c} #从左边切掉第一个匹配a*c的,一个#表示最短匹配

6)echo ${str##a*c} #从左边切掉第一个匹配a*c的,两个#表示最长匹配

7)echo ${str%d*} #从右边切掉第一个匹配d*的,一个%表示最短匹配

8)echo ${str%%d*} #从右边切掉第一个匹配d*的,两个%%表示最长匹配


4.替换字符串

str="abc abc 123 123"

1)echo ${str/123/ladeng} #将str中的第一个123替换成为ladeng

2) echo ${str//123/ladeng} #将str中所有的123替换成为ladeng

3) echo ${str/#abc/ladeng} #如果str是以abc开头,则将开头的abc替换为ladeng

4)echo ${str/%123/ladeng} #如果str是以123结尾,则将结尾的123替换为ladeng


5.字符串比较

str="abc abc 123 123"

1)[[ "$str" == "abc abc 123 123" ]] && echo hi || echo nimei #输出hi

2)[[ "$str" == a* ]] && echo hi || echo nimei #输出hi

3)[[ "$str" =~ a ]] && echo hi || echo nimei #输出hi,=~等同于包含的意思

4)[[ "$str" > "abc abc 123 223" ]] && echo hi || echo nimei #输出nimei,挨个比较ascii值


6.字符串连接

str1="ladeng"

str2=" ai xue xi"

str=${str1}${str2}

echo $str #输出ladeng ai xue xi