Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4843049
  • 博文数量: 930
  • 博客积分: 12070
  • 博客等级: 上将
  • 技术积分: 11448
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-15 16:57
文章分类

全部博文(930)

文章存档

2011年(60)

2010年(220)

2009年(371)

2008年(279)

分类:

2008-11-04 19:04:28


每天早上2-3小时shell论坛,今天终于把精华帖子恳完了,放点好脚本给各位,学shell上cu,没事逛逛论坛,心情好的时候看看精华贴.进步那真是飞一般的感觉.
不过新手最好还是先潜水一个月,在开始发帖回帖.最近论坛帖子质量严重下降都是1+1=?.
zj@zj:~/Script/cushell/08.11.04$ cat checkip.sh
#!/bin/bash


printerr () {
        echo "incorrect IP format."
        readip
        chkip
}

readip () {
        read -p "Your IP: " IP
}

chkip () {
        echo "$IP" | grep -Eq '[^0-9.]|^\.|\.$|^0*\.|\.\.' && printerr
        [ $(echo -e "${IP//./\n}" | wc -l) -ne 4 ] && printerr
        for i in ${IP//./ } ; do
                echo $i | grep -Eq "^0+[^0]" && printerr
                [ $((10#$i/8)) -gt 31 ] && printerr

        done
}

if [ "$1" ]; then
        IP=$1
else
        readip
fi
chkip
echo "$IP is good!"

解释下:

grep -Eq '[^0-9.]|^\.|\.$|^0*\.|\.\.'

[^0-9.]是不是有除了0-9与.之外的字符

^\.|\.$  以.开头 or 以.结尾

^0*\.|\.\. 以0开头 or 连续两个.

以上三种情况都是错误的哦,所以就printerr


echo -e "${IP//./\n}" | wc -l说实话前面那种替换我也是first time.就是讲.替换为换行,3个点就是4行了哦.不是3个点也就printerr


$((10#$i/8)) -gt 31 这个就是判断是不是<=255的了,当然你也可以自己修改成$i -gt 255


OK解释完毕^_^

zj@zj:~/Script/cushell/08.11.04$ ./checkip.sh 1.2.3.4
1.2.3.4 is
zj@zj:~/Script/cushell/08.11.04$ ./checkip.sh 01.2.3.4
incorrect IP format.
Your IP: a.b.a.d
incorrect IP format.
Your IP: 266.1.1.1
incorrect IP format.
Your IP: 244.255.255.255
244.255.255.255 is

阅读(3271) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~