ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] ## 字符串的长度 ``` $ foo=123234234 $ echo {$#foo} 9 ``` ## 子字符串 语法`${varname:offset:length}` ``` $ count=frogfootman $ echo ${count:4:4} foot $ echo ${foo: -5} // offset 可为负,此时需加空格 # 报错 $ echo ${"hello":2:3} ``` ## 搜索和替换 ### 搜索 ``` # 首部匹配,删除最短匹配(非贪婪匹配)的部分,返回剩余部分 ${variable#pattern} # 首部匹配,删除最长匹配(贪婪匹配)的部分,返回剩余部分 ${variable##pattern} # 尾部匹配删除最短匹配(非贪婪匹配)的部分,返回剩余部分 ${variable%pattern} # 首部匹配,删除最长匹配(贪婪匹配)的部分,返回剩余部分 ${variable%%pattern} # 任意位置匹配,最长匹配(贪婪匹配)的那部分被 string 替换,但仅替换第一个匹配 ${variable/pattern/string} # 任意位置匹配,最长匹配(贪婪匹配)的那部分被 string 替换,所有匹配都替换 ${variable//pattern/string} ``` 过滤路径,保留文件名 ``` $ path=/home/cam/book/long.file.name $ echo ${path##*/} long.file.name ``` 保留路径 ``` $ echo ${path%%.*} /home/cam/book/long ``` 修改后缀 ``` $ file=foo.png $ echo ${file%.png}.jpg foo.jpg ``` ### 替换 ``` ${variable/#pattern/string} # 示例 $ foo=JPG.JPG $ echo ${foo/#JPG/jpg} jpg.JPG ``` ## 改变大小写 ``` # 转为大写 ${varname^^} # 转为小写 ${varname,,} ```