shell校验IP地址

版权声明:转载请注明出处,谢谢。 https://blog.csdn.net/butterfly5211314/article/details/83095330

上文

写一个判断校验IP地址的方法

#!/bin/bash
function isValidIp() {
  local ip=$1
  local ret=1

  if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
    ip=(${ip//\./ }) # 按.分割,转成数组,方便下面的判断
    [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
    ret=$?
  fi

  return $ret
}

测试如下:

#!/bin/bash

# 引入 isValidIp.sh
. isValidIp.sh

for ip in 192.168.31.65 abc 0.0.0.0 255.255.255.255 33.44.55.66 aa.bb.cc.dd 666.777.888.999; do
  isValidIp $ip
  if [ $? -eq 0 ]; then
    echo "$ip is valid"
  else
    echo "$ip is not valid"
  fi
done

输出:

192.168.31.65 is valid
abc is not valid
0.0.0.0 is valid
255.255.255.255 is valid
33.44.55.66 is valid
aa.bb.cc.dd is not valid
666.777.888.999 is not valid

可以看到,测试结果符合预期。


补充(2018-10-17):调用时可直接传入if中,如下:

if ! isValidIp $ip; then
  echo "$ip is not valid"
fi

欢迎补充指正!

猜你喜欢

转载自blog.csdn.net/butterfly5211314/article/details/83095330