- #! /bin/bash
- checkip() {
- if echo $1 |egrep -q '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' ; then
- a=`echo $1 | awk -F. '{print $1}'`
- b=`echo $1 | awk -F. '{print $2}'`
- c=`echo $1 | awk -F. '{print $3}'`
- d=`echo $1 | awk -F. '{print $4}'`
- for n in $a $b $c $d; do
- if [ $n -ge 255 ] || [ $n -le 0 ]; then
- echo 'bad ip(2)!'
- return 2
- fi
- done
- else
- echo 'bad ip(1)!'
- return 1
- fi
- }
- echo -n "Please input the ip:"
- read ip
- checkip $ip
0
另外直接用grep 匹配一个IP的方法
grep -Ew '((2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)\.){3}(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)'
或者 egrep -w '((2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)\.){3}(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)'
2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]? 的意思是分三种情况来匹配0-255的数。
如果第一位是2,则第二位是0到4都行,第三位是任意一个数字。2[0-4][0-9]
如果前两位是25,则第三位是0到5。 25[0-5]
剩下的情况就是第一位是0或者1,则只要至少一个数字存在就行了。[01]?[0-9][0-9]?
grep -Ew '((2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)\.){3}(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)'
或者 egrep -w '((2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)\.){3}(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)'
2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]? 的意思是分三种情况来匹配0-255的数。
如果第一位是2,则第二位是0到4都行,第三位是任意一个数字。2[0-4][0-9]
如果前两位是25,则第三位是0到5。 25[0-5]
剩下的情况就是第一位是0或者1,则只要至少一个数字存在就行了。[01]?[0-9][0-9]?
编辑回复