变量赋值
[root@linux /]# curl='www.endvv.com'
[root@linux /]# echo $curl
www.endvv.com
获取变量长度
[root@linux /]# echo ${#curl}
13
截取变量
从指定位置开始截取字符串
[root@linux /]# echo ${curl:4} # :4 表示从curl变量值的第4个字符开始,截取到变量值的末尾
endvv.com
从倒数第4个字符开始截取,截取到字符串的末尾
[root@linux /]# echo ${curl:0-4}
.com
[root@linux /]# echo ${curl: -4}
.com
从指定位置开始截取字符串,并且指定截取字符的长度
从变量的第4个字符开始截取,截取5个字符的长度
[root@linux /]# echo ${curl:4:5}
endvv
0-9:5表示从倒数第9个字符开始,向后截取5个字符
[root@linux /]# echo ${curl:0-9:5}
endvv
0-9:-4表示从倒数第9个字符开始,向后截取所有字符,当同时指定截取长度为":-4"时,表示从倒数第9个字符向后截取所有字符以后,删除截取以后的字符的最后4个字符,也可以理解成截取最后9个字符的前5个字符。
[root@linux /]# echo ${curl:0-9:-4}
endvv
变量删除
从左往右删除
使用 "#*." 即可删除字符串中从左向右数第一个 "." 以及其左侧的全部字符
[root@linux /]# echo ${curl#*.}
endvv.com
把上面的 . 替换成其他字符也可以
[root@linux /]# echo ${curl#*e} "#*e"表示删除字符串中从左向右第一个遇到的e,以及其左侧的字符
ndvv.com
"##*." 表示删除字符串中从左向右最后一个遇到的 "." ,以及其左侧的字符
[root@linux /]# echo ${curl##*.}
com
从右往左删除
"%/*"表示删除字符串中从右向左第一个遇到的 "/" ,以及其右侧的字符
[root@linux /]# test="/www/server/nginx/sbin/nginx"
[root@linux /]# echo ${test%/*}
/www/server/nginx/sbin
也可以将上面的"/"替换成别的字符
[root@linux /]# curl="www.endvv.com"
[root@linux /]# echo ${curl%.*}
www.endvv
下面的"%%.*"表示删除字符串中从右向左最后一个遇到的 "." ,以及其右侧的字符
[root@linux /]# echo ${curl%%.*}
www
替换变量中的字符串
将curl变量中的www替换成end,但是上例中的写法,只能替换字符串中第一个遇到的www,如果字符串中包含多个"www",只有第一个"www"会被替换,其他"www"不会被替换
[root@linux /]# curl="www.endvv.com"=
[root@linux /]# echo ${curl/www/end}
end.endvv.com
如果我们想要将字符串中的所有www都替换成end,则可以使用如下语法
[root@linux /]# curl="www.www.www"
[root@linux /]# echo ${curl//www/end}
end.end.end
两种方法针对行首的字符串进行替换和针对行尾的字符串进行替换
[root@linux /]# echo ${curl/#www/end} #针对行首的字符串进行替换
end.www.www
[root@linux /]# echo ${curl/%www/end} #针对行尾的字符串进行替换
www.www.end
删除变量中的字符串
删除curl变量中的end字符串
[root@linux /]# curl="www.endvv.www"
[root@linux /]# echo ${curl/end}
www.vv.www
刚才的示例中,我们只删除了字符串中的end,如果我们想要删除字符串中的所有的"." ,则可以使用如下语法
[root@linux /]# curl="www.endvv.www"
[root@linux /]# echo ${curl//.}
wwwendvvwww