Shell中的模式匹配

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值