Skip to content

https://scz.617.cn/unix/201612071852.txt

Q:

${0##*/}什么意思?

A: scz 2016-12-07

其语法是

${parameter#word} ${parameter##word}

删除匹配的prefix pattern

word指定prefix pattern,使用pathname expansion格式,不是正则表达式。

在${parameter}中寻找prefix pattern,并删除之

进行最短匹配,##进行最长匹配

如果${parameter}是数组,将依次处理每个元素

$ var="foo/bar/baz"

$ echo ${var#*/} bar/baz

$ echo ${var##*/} baz

$ echo $(basename $var) baz

与之类似的还有

${parameter%word} ${parameter%%word}

删除匹配的suffix pattern

$ echo ${var%/*} foo/bar

$ echo ${var%%/*} foo

$ echo $(dirname $var) foo/bar