You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shell语法##*/的作用是什么?${i##*/}与${i}有何差异?

Shell中##*/的作用及${i##*/}与${i}的差异

##*/的作用

这是Shell参数扩展里的最长前缀删除语法,具体规则:

  • ${变量##匹配模式}会从变量值的开头开始,匹配符合模式的最长内容并删除,返回剩余部分。
  • 这里的*/是匹配模式:*代表任意长度的任意字符,/是路径分隔符,组合后会匹配从字符串开头到最后一个/的所有内容。

${i##*/}与${i}的差异

两者核心差异是是否保留路径前缀,用实例说明更直观:
假设变量 i="/opt/aircrack-ng/tools/test.sh"

  • ${i}:直接返回变量原始值,即完整路径:/opt/aircrack-ng/tools/test.sh
  • ${i##*/}:删除从开头到最后一个/的所有内容,只保留文件名部分:test.sh

如果变量i本身是不带路径的文件名(比如i="capture.cap"),两者结果完全一致——因为没有匹配到*/模式,不会删除任何内容。

在脚本场景中,当只需要处理文件名、不需要完整路径时,${i##*/}能快速提取目标文件名,省去手动拆分路径的麻烦。

内容的提问来源于stack exchange,提问作者Irina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 20:01:06