shell 判断字符串是不是IP

 我来答
ace_fei
2012-06-21 · TA获得超过2013个赞
知道小有建树答主
回答量:734
采纳率:100%
帮助的人:726万
展开全部
#!/bin/bash
ip='123.123.123.1231'
#ip='123.123.123.131'
echo $ip | perl -ne 'exit 1 unless /\b(?:(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5]))\b/'
if [ $? -eq 1 ]
then
echo "Invalid Ip"
else
echo "Ip is $ip"
fi
追问
这么复杂 ?要是没有perl 环境呢
追答
*unix 上都预装了perl, 这个你就不用担心了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5311d79
2012-06-12 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3227万
展开全部
string="你的字符串"
echo $string|egrep -q '([0-9]+.){3}[0-9]+' #这里并非严格意义上的判断
if [ $? -eq 0 ]; then
echo "$string is an IP address."
else
echo "$string is NOT an IP address."
fi

更严格的判断,参见下面这个链接。

参考资料: http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=267992

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
198901245631
推荐于2016-01-20 · TA获得超过3.5万个赞
知道大有可为答主
回答量:9037
采纳率:92%
帮助的人:1742万
展开全部
可以通过正则表达式进行判断:
#!/bin/bash
ip='111.111.111.111'
#ip='111.111.111.111'
echo $ip | perl -ne 'exit 1 unless /\b(?:(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5]))\b/'
if [ $? -eq 1 ]
then
echo "true"
else
echo "false"
fi
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式