shell中#和##的区别
Eave
2026.08.27
shell中#和##的区别
将/d/Documents/idea/service/common删除最后一个/及之前的字符,只要common。
project="/d/Documents/idea/service/common"
name=${project##*/}
| 语法 | 匹配方式 | 示例(同上) | 结果 |
|---|---|---|---|
${project#*/} |
非贪婪(最短匹配,从左边删) | 删掉/d/ |
Documents/idea/service/common |
${project##*/} |
贪婪(最长匹配,从左边删) | 删到最后一个/ |
common |
${project%/*} |
非贪婪(从右边删) | 删掉/common |
/d/Documents/idea/service |
${project%%/*} |
贪婪(从右边删) | 只保留第一个/之前 |
空(因为以 |
总之:#删左边,%删右边;单个非贪婪,双个贪婪。