你能用shell参数扩展匹配数字吗?

时间:2016-07-22 18:07:39

标签: bash

我正在尝试使用参数扩展从字符串末尾删除一些数字,例如:

 export ENV=dev12
 echo ${ENV##[0-9]+}

但它不起作用,我在谷歌上找不到任何关于如何做到这一点的东西?有人知道吗?

2 个答案:

答案 0 :(得分:1)

使用BASH正则表达式可以:

str='dev12'
[[ $str =~ ^(.*[^[:digit:]])[[:digit:]]+$ ]] && echo "${BASH_REMATCH[1]}"

dev

答案 1 :(得分:1)

参数扩展使用glob语法,而不是grep和其他工具使用的更规范的正则表达式语法。您还必须使用%%,因为##用于前缀。

对于您想要做的事情,没有相同的普通全局,但由于您使用bash,您可以启用extglob并使用+([0-9])

shopt -s extglob
ENV=dev12
echo ${ENV%%+([0-9])}