在服务器上加了一个服务检测机制,用到正则来匹配IP和捕获分组。shell和其他语言一样也可以使用正则分组捕获,不过不能使用 $1或\1这样的形式来捕获分组,可以通过数组${BASH_REMATCH}来获得,如${BASH_REMATCH[1]},${BASH_REMATCH[N]}
简单的测试如下所示:
1
2
3
4
5
6
7
8
9
10
11
|
#!/bin/bash
ip
=
"121.0.2.2"
if
[
[
$
ip
=
~
^
(
[
0
-
9
]
{
1
,
2
}
|
1
[
0
-
9
]
[
0
-
9
]
|
2
[
0
-
4
]
[
0
-
9
]
|
25
[
0
-
5
]
)
\
.
(
[
0
-
9
]
{
1
,
2
}
|
1
[
0
-
9
]
[
0
-
9
]
|
2
[
0
-
4
]
[
0
-
9
]
|
25
[
0
-
5
]
)
\
.
(
[
0
-
9
]
{
1
,
2
}
|
1
[
0
-
9
]
[
0
-
9
]
|
2
[
0
-
4
]
[
0
-
9
]
|
25
[
0
-
5
]
)
\
.
(
[
0
-
9
]
{
1
,
2
}
|
1
[
0
-
9
]
[
0
-
9
]
|
2
[
0
-
4
]
[
0
-
9
]
|
25
[
0
-
5
]
)
$
]
]
;
then
echo
"match"
echo
$
{
BASH_REMATCH
[
1
]
}
echo
$
{
BASH_REMATCH
[
2
]
}
echo
$
{
BASH_REMATCH
[
3
]
}
echo
$
{
BASH_REMATCH
[
4
]
}
else
echo
"Not match"
fi
|
转载请注明来自运维生存时间: http://www.ttlsa.com/html/3382.html
收 藏
转载请注明:成长的对话 » shell匹配IP和shell正则匹配捕获引用