共计 549 个字符,预计需要花费 2 分钟才能阅读完成。
在服务器上加了一个服务检测机制,用到正则来匹配 IP 和捕获分组。shell 和其他语言一样也可以使用正则分组捕获,不过不能使用 $1 或 1 这样的形式来捕获分组,可以通过数组 ${BASH_REMATCH} 来获得,如 ${BASH_REMATCH[1]},${BASH_REMATCH[N]}
简单的测试如下所示:
#!/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
正文完
星哥玩云-微信公众号