当前位置: 技术问答>linux和unix
遇到了shell的模式匹配问题,求指教
来源: 互联网 发布时间:2017-04-28
本文导语: 我要判断一个字符串是mac地址还是ip地址, mac:xx:xx:xx:xx:xx:xx ip:x.x.x.x 我想用if的双方括号模式匹配判断 if [[ addr = ..:* ]] then echo mac else echo "not mac" fi 注意我这里请教的双方括号的判断问题,我看《linu...
我要判断一个字符串是mac地址还是ip地址,
mac:xx:xx:xx:xx:xx:xx
ip:x.x.x.x
我想用if的双方括号模式匹配判断
if [[ addr = ..:* ]]
then
echo mac
else
echo "not mac"
fi
注意我这里请教的双方括号的判断问题,我看《linux命令行和shell脚本编程宝典》这本书里写的是双方括号能用正则表达式,但是这里怎么点号不起作用,有点蒙,请指教
mac:xx:xx:xx:xx:xx:xx
ip:x.x.x.x
我想用if的双方括号模式匹配判断
if [[ addr = ..:* ]]
then
echo mac
else
echo "not mac"
fi
注意我这里请教的双方括号的判断问题,我看《linux命令行和shell脚本编程宝典》这本书里写的是双方括号能用正则表达式,但是这里怎么点号不起作用,有点蒙,请指教
|
#!/bin/bash
addr=xx:xx:xx:xx:xx:xx
if [[ "$addr" =~ ":" ]]
then
echo mac
else
echo "not mac"
fi
chmod u+x test.sh
./test.sh
|
换做我的话,会用以下方法:
#
!/bin/sh
a="00:11:22:33:44:55"
#a="192.168.10.1"
if (echo $a | grep "^..:..:..:..:..:..$" >/dev/null 2>&1)
then
echo mac
else
echo not mac
fi