栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

检查IP有效性

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

检查IP有效性

如果您使用的是bash,则可以对模式进行简单的正则表达式匹配,而无需验证四边形:

#!/usr/bin/env baship=1.2.3.4if [[ $ip =~ ^[0-9]+.[0-9]+.[0-9]+.[0-9]+$ ]]; then  echo "success"else  echo "fail"fi

如果您坚持使用POSIX Shell,则可以使用

expr
BRE而不是ERE来做基本相同的事情:

#!/bin/ship=1.2.3.4if expr "$ip" : '[0-9][0-9]*.[0-9][0-9]*.[0-9][0-9]*.[0-9][0-9]*$' >/dev/null; then  echo "success"else  echo "fail"fi

请注意,

expr
假设您的正则表达式锚定在字符串的左侧,因此
^
不需要缩写。

如果确认每个四边形小于256很重要,那么显然您将需要更多代码:

#!/bin/ship=${1:-1.2.3.4}if expr "$ip" : '[0-9][0-9]*.[0-9][0-9]*.[0-9][0-9]*.[0-9][0-9]*$' >/dev/null; then  for i in 1 2 3 4; do    if [ $(echo "$ip" | cut -d. -f$i) -gt 255 ]; then      echo "fail ($ip)"      exit 1    fi  done  echo "success ($ip)"  exit 0else  echo "fail ($ip)"  exit 1fi

甚至更少的管道:

#!/bin/ship=${1:-1.2.3.4}if expr "$ip" : '[0-9][0-9]*.[0-9][0-9]*.[0-9][0-9]*.[0-9][0-9]*$' >/dev/null; then  IFS=.  set $ip  for quad in 1 2 3 4; do    if eval [ $$quad -gt 255 ]; then      echo "fail ($ip)"      exit 1    fi  done  echo "success ($ip)"  exit 0else  echo "fail ($ip)"  exit 1fi

再或者,如果您的shell是bash,那么您可以在不喜欢算术的情况下使用繁琐的正则表达式进行四边形验证:

#!/usr/bin/env baship=${1:-1.2.3.4}re='^(0*(1?[0-9]{1,2}|2([0-4][0-9]|5[0-5])).){3}' re+='0*(1?[0-9]{1,2}|2([‌​0-4][0-9]|5[0-5]))$'if [[ $ip =~ $re ]]; then  echo "success"else  echo "fail"fi

这也可以用BRE表示,但这比我的手指输入要多。

最后,如果您喜欢将此功能…放入功能中的想法:

#!/usr/bin/env baship=${1:-1.2.3.4}ipvalid() {  # Set up local variables  local ip=${1:-1.2.3.4}  local IFS=.; local -a a=($ip)  # Start with a regex format test  [[ $ip =~ ^[0-9]+(.[0-9]+){3}$ ]] || return 1  # Test values of quads  local quad  for quad in {0..3}; do    [[ "${a[$quad]}" -gt 255 ]] && return 1  done  return 0}if ipvalid "$ip"; then  echo "success ($ip)"  exit 0else  echo "fail ($ip)"  exit 1fi

您可以通过多种方式执行此操作。我只给你看了几个。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/405745.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号