如何将以下主机名与 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字符类名称必须全部小写。