bash参数扩展和组合模式匹配运算符

时间:2017-10-07 23:39:05

标签: bash parameter-expansion

是否可以使用参数扩展来组合模式匹配运算符?

例如,给定变量test=/home/archie/.vimrc.bak

我可以使用$test删除echo ${test##*/}开头的最长匹配:

>> echo ${test##*/}
.vimrc.bak

我还可以使用$test删除echo ${test%.*}末尾的最短匹配:

>> echo ${test%.*}
/home/archie/.vimrc

有没有办法将两个模式匹配运算符组合成输出.vimrc

1 个答案:

答案 0 :(得分:3)

你无法在一次扩展中完成,但你可以用两个扩展:

$ test=/home/archie/.vimrc.bak; tmp="${test%.*}"; name="${tmp##*/}"; echo "$name"
.vimrc