bash + 正则表达式 + 验证机器名称

bash + 正则表达式 + 验证机器名称

如何将以下主机名与 bash 正则表达式匹配?

我的 Linux 主机名是: star01 、 star02 、 star03 、 start04 。

我的目标是用任何第二个数字验证字符串“start0”

我执行以下操作:

 [[ $hostname =~ star0[:digit:]  ]] && echo ok

但这不起作用:

hostname=star04
[[ $hostname =~ star0[:digit:]  ]] && echo ok

这里出了什么问题?

答案1

Posix 字符类应指定为[[:digit:]]

[[ $hostname =~ star0[[:digit:]] ]] && echo ok

另一种简化方法是:

[[ $hostname =~ star0[0-9] ]] && echo ok

[:digit:]是一个POSIX字符类,在括号表达式内使用,例如[x-z[:digit:]].这POSIX字符类名称必须全部小写。

相关内容