shell脚本判断MAC地址是否合法

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次;

你可能感兴趣的:(嵌入式开发中的总结,shell,网络)