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可以从一个文件路径中截一个文件名

1
2
3
4
[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

 

posted @   llwang_12  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示