我试图删除使用参数扩展从字符串的结尾一些数字,如:你可以使用shell参数扩展匹配数字吗?
export ENV=dev12
echo ${ENV##[0-9]+}
但它不工作,我无法找到如何做到这一点的谷歌什么?有人知道吗?
我试图删除使用参数扩展从字符串的结尾一些数字,如:你可以使用shell参数扩展匹配数字吗?
export ENV=dev12
echo ${ENV##[0-9]+}
但它不工作,我无法找到如何做到这一点的谷歌什么?有人知道吗?
参数扩展使用水珠语法,而不是grep和其他工具使用更规范的正则表达式的语法。您还必须使用%%
,因为##
用于前缀。
这里没有普通的水珠相当于你想做的事,但因为你是使用bash
你可以可以启用extglob和使用+([0-9])
:
shopt -s extglob
ENV=dev12
echo ${ENV%%+([0-9])}
使用bash正则表达式,你可以这样做:
str='dev12'
[[ $str =~ ^(.*[^[:digit:]])[[:digit:]]+$ ]] && echo "${BASH_REMATCH[1]}"
dev
'$ {VAR ## ...}'中移除了来自字符串的_beginning_。要从最后删除,请使用'$ {var %% ...}'。 – twalberg