在shell中如何判断字符串是否为有效的IP地址【转】
2017-07-12 17:25
411 查看
转自
在shell中如何判断字符串是否为有效的IP地址_echoisecho_新浪博客 http://blog.sina.com.cn/s/blog_53a844e50100xxus.html
近来需要写个小shell判断用户输入的字符串是否为有效的ip地址,简单排除了以下几种情况:
1. 以点号为分隔的域不等于4或6;
2. 出现字符;
3. 某域以0开头;
4. 各域数值长度大于3;
5. 各域数值大于255
6. 第一个和最后一个域为0
IPADDR=192.168.1.1 (有效)
IPADDR=192.168.0.254(有效)
IPADDR=10.0.0.0(无效)
IPADDR=0.1.1.1(无效)
IPADDR=192.168.001.001 (无效)
IPADDR=1aa.2bb.3cc.4dd (无效)
IPADDR=aaa.bbb.ccc.ddd (无效)
IPADDR=192.168.1.1.2 (无效)
IPADDR=292.168.1.1(无效)
IPADDR=192.168.1.1111(无效)
脚本如下:
另外补充正则表达式的方法:
在shell中如何判断字符串是否为有效的IP地址_echoisecho_新浪博客 http://blog.sina.com.cn/s/blog_53a844e50100xxus.html
近来需要写个小shell判断用户输入的字符串是否为有效的ip地址,简单排除了以下几种情况:
1. 以点号为分隔的域不等于4或6;
2. 出现字符;
3. 某域以0开头;
4. 各域数值长度大于3;
5. 各域数值大于255
6. 第一个和最后一个域为0
IPADDR=192.168.1.1 (有效)
IPADDR=192.168.0.254(有效)
IPADDR=10.0.0.0(无效)
IPADDR=0.1.1.1(无效)
IPADDR=192.168.001.001 (无效)
IPADDR=1aa.2bb.3cc.4dd (无效)
IPADDR=aaa.bbb.ccc.ddd (无效)
IPADDR=192.168.1.1.2 (无效)
IPADDR=292.168.1.1(无效)
IPADDR=192.168.1.1111(无效)
脚本如下:
#!/bin/sh IPADDR=$1 _ckIPaddr () { ckStep1=`echo $1 | awk -F"." '{print NF}'` if [ $ckStep1 -eq 4 ] || [ $ckStep1 -eq 6 ] then ckStep2=`echo $1 | awk -F"." '{if ($1!=0 && $NF!=0) split ($0,IPNUM,".")} END \ { for (k in IPNUM) if (IPNUM[k]==0) print IPNUM[k]; else if (IPNUM[k]!=0 && IPNUM[k]!~/[a-z|A-Z]/ && length(IPNUM[k])<=3 && IPNUM[k]<255 && IPNUM[k]!~/^0/) print IPNUM[k]}'| wc -l` if [ $ckStep2 -eq $ckStep1 ] then echo 0 else echo 1 fi else echo 1 fi } CK_IPADDR=`_ckIPaddr $IPADDR` if [ $CK_IPADDR -eq 1 ] then echo "The string $IPADDR is not a correct ipaddr!!!" fi
另外补充正则表达式的方法:
#!/bin/sh IPADDR=$1 regex="\b(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[1-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[1-9])\b" ckStep2=`echo $1 | egrep $regex | wc -l` if [ $ckStep2 -eq 0 ] then echo "The string $IPADDR is not a correct ipaddr!!!" else echo $1 fi
相关文章推荐
- 在shell中如何判断字符串是否为有效的IP地址
- 如何判断字符串是否是有效的的IP地址
- shell 判断字符串是否为有效ip地址
- MFC中 如何判断一个字符串是否是有效的目录 或盘符
- 判断一个字符串是否为有效ip地址
- 如何判断一个字符串是否为正确的IP地址
- 面试题整理17 输入一个字符串判断一个字符串是否是有效ip地址
- 如何判断用户输入的字符串是否是IP地址
- 面试题整理17 输入一个字符串判断一个字符串是否是有效ip地址
- 如何判断字符串是否是有效EMAIL地址
- Oracle 中如何判断一个字符串是否为数字
- 在shell中如何判断一个变量是否为空
- shell字符串比较、判断是否为数字
- 如何判断字符串中是否都是数字
- javascript中如何判断字符串是否为日期
- 如何判断一个字符串中是否包含另一个字符串
- 在不同数据库中如何判断一个字符串内是否含有中文?
- oracle中如何判断字符串是否全为数字,以及从任意字符串中提取数字
- 如何判断字符串是否为空串?
- c#中如何判断字符串是否为数字