shell校驗IP地址
阿新 • • 發佈:2018-10-31
接上文
寫一個判斷校驗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
歡迎補充指正!