方法1:
#!/bin/bash
if [ -z $1 ]; then
read -p "please input ip:" x
else
x=$1
fi
echo $x
r=0
r=$(echo $x| awk -F "." '{if ($1<256 && $1>=0 && $2<256 && $2 >=0 && $3<256 && $3>=0 && $4<256 && $4>=0){print "0"} else {print "1"}}')
echo $r
方法2(来自互联网):
IP=$1
VALID_CHECK=$(echo $IP|awk -F. '$1<=255&&$2<=255&&$3<=255&&$4<=255{print "yes"}')
if echo $IP|grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$">/dev/null; then
if [ $VALID_CHECK == "yes" ]; then
echo "$IP available."
else
echo "$IP not available!"
fi
else
echo "Format error!"
fi
总结:
1.IP地址(v4)特征是以“.”为分隔,一共4段,均为0-255之间的数字
2.方法1使用awk获取数字并判断数字的属于0-255之间。其对错误的输入,比如负数、小数、字母或其他字符都按错误处理
方法1的awk部分还可以写成如下:
awk -F "." '{if ($1>255 || $1<0){print "1"} else if ($2>255 || $2<0){print "1"} else if ($3>255 || $3<0){print "1"}else if ($4>255 || $4<0){print "1"}else {print "0"}}'
3.方法2使用awk以“.”为分隔的4段数据做判断小于等于255,配合grep判断其4段数据为4个3位数以内的整数。
补充:
没想到不到一天有这么多浏览,必须得努力提高质量。
今天把方法1修改为一个函数形式,如下:
chkip()
{
r=$(echo $1 | awk '/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/{print "ok"}')
echo $r
if [ -z $r ]; then
r=2
else
r=$(echo $1| awk -F "." '{if ($1<256 && $1>=0 && $2<256 && $2 >=0 && $3<256 && $3>=0 && $4<256 && $4>=0){print 0} else {print 1}}')
fi
return $r
}