版权声明:转载请注明出处,谢谢。 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
欢迎补充指正!