在shell中如何判断字符串是否为有效的IP地址【转】
转自
在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=$
_ckIPaddr () {
ckStep1=`echo $ | awk -F"." '{print NF}'`
if [ $ckStep1 -eq ] || [ $ckStep1 -eq ]
then
ckStep2=`echo $ | awk -F"." '{if ($1!=0 && $NF!=0) split ($0,IPNUM,".")} END \
{ for (k in IPNUM) if (IPNUM[k]==) print IPNUM[k]; else if (IPNUM[k]!= && IPNUM[k]!~/[a-z|A-Z]/ && length(IPNUM[k])<= &&
IPNUM[k]< && IPNUM[k]!~/^/) print IPNUM[k]}'| wc -l`
if [ $ckStep2 -eq $ckStep1 ]
then
echo
else
echo
fi
else
echo
fi
} CK_IPADDR=`_ckIPaddr $IPADDR`
if [ $CK_IPADDR -eq ]
then
echo "The string $IPADDR is not a correct ipaddr!!!"
fi
另外补充正则表达式的方法:
#!/bin/sh
IPADDR=$
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 $ | egrep $regex | wc -l`
if [ $ckStep2 -eq ]
then
echo "The string $IPADDR is not a correct ipaddr!!!"
else
echo $
fi
在shell中如何判断字符串是否为有效的IP地址【转】的更多相关文章
- shell中条件判断if中的-z到-d的意思
shell中条件判断if中的-z到-d的意思 [ -a FILE ] 如果 FILE 存在则为真. [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真. [ -c FILE ] 如果 ...
- shell中条件判断if中的-z到-d
shell中条件判断if中的-z到-d的意思 [ -a FILE ] 如果 FILE 存在则为真. [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真.[ -c FILE ] 如果 ...
- shell 中如何判断前一个命令是否执行成功
shell 中如何判断前一个命令是否执行成功 通过判断返回值来解决: if [ $? -eq 0 ];then 命令正确的分支 else 命令失败的分支 fi
- Oracle中如何判断字符串是否全为数字
Oracle中如何判断字符串是否全为数字 学习了:http://www.cnblogs.com/zrcoffee/archive/2012/12/11/2812744.html 本文介绍了判断字符串是 ...
- 华为oj-判断输入的字符串是不是一个有效的IP地址
题目标题: 判断输入的字符串是不是一个有效的IP地址 详细描述: 请实现如下接口 boolisIPAddressValid(constchar* pszIPAddr) 输入:pszIPAddr 字符串 ...
- shell中if条件字符串、数字比对,[[ ]]和[ ]区别
目录 shell 括号 test 和 []符号 [[]] 符号 let和(())符号 "[]" , "[[]]" 和 "(())"对比 sh ...
- Shell中比较判断
一.shell判断数组中是否包含某个元素:ary=(1 2 3)a=2if [[ "${ary[@]}" =~ "$a" ]] ; then echo & ...
- shell 中的判断
一.if的基本语法: if [ command ];then 符合该条件执行的语句 elif [ command ];then 符合该条件执行的语句 else 符合该条件执行的语句 ...
- Oracle中如何判断字符串是否全为数字,以及从任意字符串中提取数字
本文介绍了判断字符串是否全为数字的4种办法,另外还介绍了一个translate函数的小技巧,从任意字符串中提取数字(调用2次translate函数).这个办法是一个公司同事发现的,用起来很方便,但理解 ...
随机推荐
- ZOJ3113_John
这个题目是一个典型的Anti_Sg.我也不知道为什么这么叫,呵呵,反正大家都这么叫,而且我也是听别人说,看别人的日志自己才知道的. 题目的意思是给你不同颜色的石子,每次可以去一种颜色的石子若干个(至少 ...
- ZOJ3084_S-Nim
题目的意思是这样的,给定你若干堆石子,每次你可以从任一堆取出某些固定数量的石子,每次取完后必须保证没堆石子的数量不为0,谁无法操作了就算fail. 刚刚开始看题目的时候有点也没有思路,甚至连Sg函数也 ...
- 51nod 1624 取余最短路(set)
题意: 佳佳有一个n*m的带权矩阵,她想从(1,1)出发走到(n,m)且只能往右往下移动,她能得到的娱乐值为所经过的位置的权的总和. 有一天,她被下了恶毒的诅咒,这个诅咒的作用是将她的娱乐值变为对p取 ...
- wp开发(三)--赚取收益篇
App开发完毕了,是否有赚取收益的想法呢?下面很浅显地介绍两种常用赚取收益的方法. 一. 收费 在发布应用时,可以对应用进行定价,发布到商城之后,用户付费才可以下载,当然也可以提供试用版.收益状况可以 ...
- 【Java】list转换json的中文乱码问题
添加如图红框内容
- BZOJ3724 [HNOI2012]集合选数 【状压dp】
题目链接 BZOJ3724 题解 构造矩阵的思路真的没想到 选\(x\)就不能选\(2x\)和\(3x\),会发现实际可以转化为矩阵相邻两项 \[\begin{matrix}1 & 3 &am ...
- 通过系统自带的MSI安装包来提权账号
Windows environments provide a group policy setting which allows a regular user to install a Microso ...
- 【读书笔记】《HTTP权威指南》:Web Hosting
一.概述 从零开始构建一个真正意义的网站需要做很多事情,包括购买计算机硬件.建造机房.注册域名.购买网络带宽.开发Web服务器软件.管理网站内容等等.在互联网发展的早期,构建网站的这一系列动作通常都是 ...
- Codeforces 601D. Acyclic Organic Compounds(四个愿望一次满足)
trie合并的裸题...因为最多只有n个点,所以最多合并n次,复杂度$O(N*26)$. #include<iostream> #include<cstring> #inclu ...
- winform设计一个登录界面和修改密码的界面-自动切换窗体(问题[已解] 望一起讨论)(技术改变世界-cnblog)
http://www.cnblogs.com/IAmBetter/archive/2012/01/14/2322156.html winform设计一个登录界面和修改密码的界面-自动切换窗体(问题[已 ...