bannernames=${pathname##*/}
如果pathname只是一个文件名,模式*/(任意内容后跟一个斜线)将不匹配,表达式取值仍为pathname;
如果pathname内容类似book/wonderland,则前缀book/将匹配模式并被删除,只留下wonderland作为表达式的值;
如果pathname类似/home/cam/book/wonderland,情况也一样:因为##将删除最长的匹配,所以将删除整个/home/can/book/;
如果使用#*/而不是##*/,表达式将得到home/cam/book/wonderland,因为“以斜线开始字符串”的最短实例只是一条斜线(/);
具体实例如下:
path="home/cam/book/long.file.name"
echo ${path#*/} cam/book/long.file.name
echo ${path#/*/} home/cam/book/long.file.name
echo ${path##/*/} home/cam/book/long.file.name
echo ${path%.*} home/cam/book/long.file
echo ${path%%.*} home/cam/book/long
path="/home/cam/book/long.file.name"
echo ${path#*/} home/cam/book/long.file.name
echo ${path#/*/} cam/book/long.file.name
echo ${path##/*/} long.file.name
echo ${path%.*} /home/cam/book/long.file
echo ${path%%.*} /home/cam/book/long