04


假设我们定义了一个路径变量为:

file=/dir1/dir2/dir3/my.file.txt

我们可以用 ${ } 分別替换获得不同的值:

${file#*/}:拿掉第一条 / 及其左边的字串:dir1/dir2/dir3/my.file.txt

${file##*/}:拿掉最后一条 / 及其左边的字串:my.file.txt

${file#*.}:拿掉第一个 . 及其左边的字串:file.txt

${file##*.}:拿掉最后一个 . 及其左边的字串:txt

${file%/*}:拿掉最后条 / 及其右边的字串:/dir1/dir2/dir3

${file%%/*}:拿掉第一条 / 及其右边的字串:(空值)

${file%.*}:拿掉最后一个 . 及其右边的字串:/dir1/dir2/dir3/my.file

${file%%.*}:拿掉第一个 . 及其右边的字串:/dir1/dir2/dir3/my

 

简单来说就是

两个#(或者%)表示最大匹配

一个#(或者%)表示最小匹配

#从左边开始匹配,%从右边开始匹配

但是是找到匹配的被切掉.

preload preload preload