1、首先,创建一个t.sh的shell脚本文件。
2、然后,通过chmod 755 t.sh 命令给脚本文件加上可执行权限。
3、接下来,用vim打开t.sh编写代码。
4、我们希望在shell中执行t.sh时,后面直接接ip地址,然后t.sh处理后输出ip地址的整数。先增加一个参数判断,如果t.sh在使用的过程不是 t.sh ip地址的格式即输出相应的帮助信息。if [ $# != 1 ];then echo "ip.sh ip_address ,convert ip address to int" echo "ex:ip.sh 127.0.0.1" exitfi
5、接下来通过awk命令将t.sh接收的参数$1进行正则处理,以127.0.0.1为例,通过如下代码将其分解为127、0、0、1四个整数。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}'`
6、最后,给ip地址的每段加上相应的位权即可,这里可以将ip地址想象成4位256进制的数,还是以127.0.0.1为例,则127的位权即256的三次方,左面第一个0的位权为256的平方,右面第二个0的位权为256的1次方即256,最后的1位权即为256的0次方。要用shell脚本表达即为:let int_ip=a*256*256*256+b*256*256+c*256+decho $int_ip将其优化一下即为let int_ip=a*16777216+b*65536+c*256+decho $int_ip
7、编写完成后在vim中通过wq命令退出保存,接下来拿个ip地址作为实例看下效果,这里以百度的cdn服务器ip地址为例。
8、然后执行t.sh,后面接上图获取的ip地址,然后就可以看到相应的整数了。
9、再用ping 一下上图算出的整数,可以看到显示的ip地址是一样的了。