ao jun ${var%word*}:其中word可以是指定的任意字符;
功能:
自右而左,查找var变量所存储的字符串中,第一次出现的word,删除字符串最后一个字符向左至第一次出现word字符之间的所有字符; ${var%%word*}:同上,
只不过删除字符串最右侧的字符向左至最后一次出现word 字符之间的所有字符,(贪婪模式);
注意:
支持使用通配符,不支持正则表达式
[root@Note3 ~]# str="i very very love linux "
[root@Note3 ~]# echo ${str#*e}
ry very love linux
[root@Note3 ~]# echo ${str##*e}
linux
[root@Note3 ~]# echo ${str%e*}
i very very lov
[root@Note3 ~]# echo ${str%%e*}
i v
3、字符串查找替换 ${var/pattern/substi}:
查找var所表示的字符串中,第一次被pattern 所匹配到的字符串,以substi替换之 ${var//pattern/substi}:
查找var所表示的字符串中,所有能被pattern 所匹配到的字符串,以substi 替换之(全局替换) ${var/#pattern/substi}
查找var 所表示的字符串中,行首被pattern所匹配到的字符串,以substi替换之 ${var/%pattern/substi}
查找var 所表示的字符串中,行尾被pattern 所匹配到的字符串,以substi 替换之 ${var/pattern[/]}:查找var 所表示的字符串中,删除第一次pattern 所匹配到的字符串
注意:
支持使用通配符,不支持正则表达式
[root@Note3 ~]# echo ${str/e.y/sb} #不支持正则表达式
i very very love linux
[root@Note3 ~]# echo ${str/e?y/sb} #支持通配符
i vsb very love linux
[root@Note3 ~]# echo ${str/e[a-z]y/sb}
i vsb very love linux
[root@Note3 ~]# echo ${str//e?y/sb}
i vsb vsb love linux
[root@Note3 ~]# echo ${str/#i/sb}
sb very very love linux
[root@Note3 ~]# echo ${str/%i/sb}
i very very love linux
[root@Note3 ~]# echo ${str/%ux/sb}
i very very love linux
[root@Note3 ~]# echo ${str/%u/sb}
i very very love linux
[root@Note3 ~]# echo ${str/%x/sb}
i very very love linux
[root@Note3 ~]# echo ${str/%?/sb}
i very very love linuxsb
#查找删除(替换为空)
[root@Note3 ~]# str="i very very love linux"
[root@Note3 ~]# echo ${str/%linux}
i very very love
[root@Note3 ~]# echo ${str/%linux/}
i very very love
[root@Note3 ~]# echo ${str/i/}
very very love linux
[root@Note3 ~]# echo ${str/i v/}
ery very love linux
[root@Note3 ~]# echo ${str/i v}
ery very love linux
[root@Note3 ~]# echo ${str/v}
i ery very love linux
[root@Note3 ~]# echo ${str//v}
i ery ery loe linux
4、字符大小写转换 ${var^^}:把var 中的所有小写字母转换为大写 ${var,,}:把var 中的所有大写字母转换为小写
[root@Note3 ~]# echo ${str^^}
I VERY VERY LOVE LINUX
[root@Note3 ~]# echo ${str,,}
i very very love linux
5、变量赋值 ${var:-value}:如果var为空或未设置,那么返回value ;否则,返回var的值 ${var:+value}:如果var不空,则返回value ,否则返回var的值即空值 ${var:=value}:如果var为空或未设置,那么返回value,并将value赋值给var;否则返回var的值 ${var:?error_info}:如果var为空或未设置,那么在当前终端打印error_info;否则返回var的值
[root@Note3 ~]# echo $str
i very very love linux