shell-关于字符串截断
*:统配符,一般与“##”或"#"联用时放在搜索字符串的左边,例如:${String#*sh}(在sh的左边),
与"%%"或"%"联用时会放在搜索字符串的右边,例如:${String%%sh*}。
string是指定对哪个字符串进行截断。
#:去掉左边,即去除第一个搜索字符串所在位置及其左边的内容,
##:去除最后一个搜索字符串所在位置及其左边的内容,即保留最后一个。
%:去掉右边,即去除最后一个搜索字符串所在位置及其右边的内容,
%%:去除第一个搜索字符串所在位置及其右边的内容,即保留第一个。
如:
service=eureka-service-biz ${service%-*}: 去除最后一个-及其右边的字符串:eureka-service ${service%%/*}: 去除第一个-及其右边的字符串:eureka file=/root/mychart/Chart.yaml ${file#*/}: 去除第一个/及其左边的字符串: root/mychart/Chart.yaml ${file##*/}: 去除最后一个/及其左边的字符串:Chart.yaml
---------------------------------------------------------
dirname可以从一个文件路径中截到一个目录路径:
[root@k8s-master01 mychart]# dirname /root/mychart/Chart.yaml /root/mychart [root@k8s-master01 mychart]# dirname /root/mychart/templates/ /root/mychart
basename可以从一个文件路径中截一个文件名:
[root@k8s-master01 mychart]# basename /root/mychart/Chart.yaml 可以是文件名 Chart.yaml [root@k8s-master01 mychart]# basename /root/mychart/templates/ 也可以是目录 templates
常用技巧:
在路径中取文件名:${path##*/}(与basename相同功能)
在路径中取目录路径:${path%/*}(与dirname相同功能)
取文件的扩展名:${path##*.}
参考:https://www.cnblogs.com/cangqinglang/p/12498370.html

浙公网安备 33010602011771号