日期:2014-05-16  浏览次数:20626 次

遇到了shell的模式匹配问题,求指教
我要判断一个字符串是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脚本编程宝典》这本书里写的是双方括号能用正则表达式,但是这里怎么点号不起作用,有点蒙,请指教
shell 正则表达式 脚本 linux 编程

------解决方案--------------------
#!/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