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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】