1、检测MAC地址的函数
# MAC地址检查正确性,接收MAC地址,形式为:XX:XX:XX:XX:XX:XX
check_mac()
{
# 正则表达式,校验MAC地址合法性:必须用:号隔开、每个字段2位十六进制、第一个字段必须为偶数(因为bit40为1表示组播地址)
echo $1 |grep -Eq "^([0-9a-f][02468ace])(([:]([0-9a-f]{2})){5})$"
if [ "$?" != "0" ]; then
echo "wrong MAC address!"
return 1
fi
return 0
}
2、grep命令的参数
参数 | 含义 |
---|---|
-E | 将范本样式延伸为普通表达式来使用 |
-q | 不显示任何信息 |
^ | 匹配行首 |
$ | 匹配行尾 |
. | 匹配任意单个字符 |
* | 匹配前一个字符0次或多次 |
+ | 匹配前一个字符1次或多次 |
[ ] | 匹配括号里的任意一个字符 |
( ) | 分组,用于匹配复杂的模式 |
3、正则表达式解析
echo $1 |grep -Eq "^([0-9a-f][02468ace])(([:]([0-9a-f]{2})){5})$" #判断输入的MAC地址,是否符合特定格式
第一步:^和$:两个符号之间是要匹配的字符串格式;
第二步:([0-9a-f][02468ace]):表示第一个字符可以是数字0-9或者小写字母a-f,第二个字符可以是"02468ace"中的任意一个;
第三步:(:):第一个字符必须是冒号,第二和第三字符可以是数字0-9或者小写字母a-f;
第四步:{5}:把第三步的匹配重复5次;