简介
![ed5afb71a52021ec2f55109d44cd544f.png](https://img-blog.csdnimg.cn/img_convert/ed5afb71a52021ec2f55109d44cd544f.png)
写脚本的时候,需要判断IP是否是合法IP,再进行设置。
什么样子的字符串是合法 IP
IPv4 使用 32 位(4 字节)地址,即
8 bit/byte *4 byte = 32 bit
二进制范围:
00000000.00000000.00000000.00000000 - 11111111.11111111.11111111.11111111
因此,只要判断是在这个范围就可以,判断是否是合法 IP?
![0062b350261514c63892fd289ba450c1.png](https://img-blog.csdnimg.cn/img_convert/0062b350261514c63892fd289ba450c1.png)
脚本
分解判断:
- 判断是否是ipv4格式
- 判断值是否合法
#!/bin/baship=$1if [ "$ip" == "" ]; then echo "usage : $0 ip" exit 1fierr_mssage="$ip is invalid ipv4"if !( echo $ip | grep -E '^[[:digit:]].[[:digit:]].[[:digit:]].[[:digit:]]$' >>/dev/null); then echo $err_mssage exit 1fiplace1=$(echo $ip | awk -F "." '{print $1}')place2=$(echo $ip | awk -F "." '{print $2}')place3=$(echo $ip | awk -F "." '{print $3}')place4=$(echo $ip | awk -F "." '{print $4}')function check_number() { number=$1 if [[ $number -ge 0 && $number -le 255 ]]; then return 0 fi echo $err_mssage return 1}check_number $place1 || exit 1check_number $place2 || exit 1check_number $place3 || exit 1check_number $place4 || exit 1echo $ip is ipv4
![8145aa94f71017ff2a92798afd3523ed.png](https://img-blog.csdnimg.cn/img_convert/8145aa94f71017ff2a92798afd3523ed.png)