字符串的长度
语法:${#varName}
$ var1=C99
$ echo ${#var1}
3
提取字符串
语法:
1、${varName:offset}
:从 offset 索引处开始,直到最后一个字符。
$ var1=hello
$ echo ${var1:2}
llo
2、${varName:offset:length}
:从 offset 索引处开始,截取 length 个字符。
offset 为负数:从倒数第几个字符开始(非索引值)
length 为负数:截取到倒数第几个字符(非索引值)
$ var1=hello
$ echo ${var1:1:2}
el
$ echo ${var1: -5:2}
he
$ echo ${var1: -5:-1}
hell
搜索和替换
语法:
- 非贪婪匹配模式:
${varName/pattern/replace}
- 贪婪匹配模式:
${varName//pattern/replace}
匹配字符串中的 pattern
字符串,并替换为replace
。pattern
中可以使用:*、?、[]
等通配符。replace
若为空,则意为删除匹配内容。
贪婪与非贪婪模式的区别在于一个是短匹配,一个是长匹配。
$ var1=/home/dic/cdic/shellTest
# 非贪婪模式,匹配字符:只替换了第一个 dic
$ echo ${var1/dic/replace}
/home/replace/cdic/shellTest
# 贪婪模式,匹配字符:替换了全部的 dic
$ echo ${var1//dic/replace}
/home/replace/creplace/shellTest
如果无法匹配则直接返回:
$ echo ${var1//noexists}
/home/dic/cdic/shellTest
关于通配符、头部匹配、尾部匹配,还是用别的命令吧。。。
改变大小写
语法:
- 转为大写:
${varName^^}
- 转为小写:
${varName,,}
$ var1=heLLo
$ echo ${var1^^}
HELLO
$ echo ${var2,,}
hello