[chao@localhost ~]$ var1="I love you, Do you love me"[chao@localhost ~]$ echo $var1
I love you, Do you love me
# 头部匹配删除[chao@localhost ~]$ var2=${var1#*ov}[chao@localhost ~]$ echo $var2
e you, Do you love me
[chao@localhost ~]$ var3=${var1##*ov}# 贪婪模式[chao@localhost ~]$ echo $var3
e me
# 尾部匹配删除[chao@localhost ~]$ var4=${var1%ov*}[chao@localhost ~]$ echo $var4
I love you, Do you l
[chao@localhost ~]$ var5=${var1%%ov*}# 贪婪模式[chao@localhost ~]$ echo $var5
I l
# 替换[chao@localhost ~]$ var6=${var1/love/hate}[chao@localhost ~]$ echo $var6
I hate you, Do you love me
[chao@localhost ~]$ var7=${var1//love/hate}[chao@localhost ~]$ echo $var7
I hate you, Do you hate me
[chao@localhost ~]$ echo `expr index "$var1" love`3[chao@localhost ~]$ echo `expr match "$var1""I love"`6
抽取子串
语法
说明
${变量:下标}
从变量中的指定下标开始
${变量:下标:length}
从指定下标开始,匹配长度为length
${变量: -下标}
从右边指定下标开始匹配 注意冒号和负号中间有空格
${变量:(下标)}
从右边指定下标开始匹配
expr substr $变量 $下标 $length
从指定下标开始,匹配长度为length
[chao@localhost ~]$ echo ${var1:10}you love me
[chao@localhost ~]$ echo ${var1:10:5}you l
[chao@localhost ~]$ echo ${var1: -4}e me
[chao@localhost ~]$ echo ${var1:(-4)}e me
[chao@localhost ~]$ echo ${var12}e
[chao@localhost ~]$ echo `expr substr "$var1"10 5`you
3. 命令替换
Shell命令替换是指将命令的输出结果赋值给某个变量,有两种方式:一种是反引号`,一种是$()。
语法
说明
变量=`命令`
可以只有一个命令,也可以有多个命令,多个命令之间以分号;分隔
变量=$(命令)
同上
# 根据系统时间计算今年或明年[chao@localhost ~]$ echo "This is $(date +%Y) year"This is 2020 year
[chao@localhost ~]$ echo "This is $(($(date +%Y)+1)) year"This is 2021 year
# 注意:$()表示命令替换,仅有()表示计算 加减乘除