1. 程式人生 > >shell校驗IP地址

shell校驗IP地址

上文

寫一個判斷校驗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

歡迎補充指正!