Shell中的${ }、#、##、%、%%使用范例

范例:

假设定义了一个变量为,【代码如下】:

file=/dir1/dir2/dir3/my.file.txt

可以用${ }分别替换得到不同的值:

${file#*/}:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt

${file##*/}:删掉最后一个 /  及其左边的字符串:my.file.txt

${file#*.}:删掉第一个 .  及其左边的字符串:file.txt

${file##*.}:删掉最后一个 .  及其左边的字符串:txt

${file%/*}:删掉最后一个  /  及其右边的字符串:/dir1/dir2/dir3

${file%%/*}:删掉第一个 /  及其右边的字符串:(空值)

${file%.*}:删掉最后一个  .  及其右边的字符串:/dir1/dir2/dir3/my.file

${file%%.*}:删掉第一个  .   及其右边的字符串:/dir1/dir2/dir3/my

 

【记忆的方法为】:

# 是 去掉左边(键盘上#在 $ 的左边)

%是去掉右边(键盘上% 在$ 的右边)

单一符号是最小匹配;两个符号是最大匹配

${file:0:5}:提取最左边的 5 个字节:/dir1

${file:5:5}:提取第 5 个字节右边的连续5个字节:/dir2

也可以对变量值里的字符串作替换:

${file/dir/path}:将第一个dir 替换为path:/path1/dir2/dir3/my.file.txt

${file//dir/path}:将全部dir 替换为 path:/path1/path2/path3/my.file.txt

posted @   Macoffee  阅读(3737)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示