2017-07-28 79 views
1

我有一個版本字符串,例如bash的參數代替數字一次或多次

version=1.2.23b2 

我想有隻與b2的最後一部分,所以我想這:

${version##*[0-9]*.[0-9]*.[0-9]*} 

我的想法是,*將意味着沒有或重複的領先模式,但實際上它意味着任何字符沒有或多次。所以我希望我的模式表達,這只是數字,一次或多次。

回答

1

*以glob模式匹配任何字符0次或更多次。

你可以在這裏使用擴展glob模式:

shopt -s extglob 
echo "${version##+([0-9.])}" 
b2 

否則,您可以在這裏使用正則表達式:

version='1.2.23b2' 
re='^[0-9]+.[0-9]+.[0-9]+(.+)' 
[[ $version =~ $re ]] && echo "${BASH_REMATCH[1]}" 

b2 

即使這個表達式應該上面的工作:

re='^[0-9.]+(.+)'