#!/bin/bash ipAndIptoNetwork() { echo "test" # expects $1 to be an ip address # expects $2 to be an ip address local oldifs local IP1 local IP2 local ip1num local ip2num local masknum local t local ipnet local prefix local ipnetnum echo "blah" oldifs="$IFS" IFS=. IP1=($1) IP2=($2) ip1num=$((IP1[0]*256*256*256 + IP1[1]*256*256 + IP1[2]*256 + IP1[3])) ip2num=$((IP2[0]*256*256*256 + IP2[1]*256*256 + IP2[2]*256 + IP2[3])) masknum=$((255*256*256*256 + 255*256*256*256 + 255*256 + 255)) IFS="$oldifs" ((masknum= !(ip2num-ip1num) )) echo $masknum echo $ip1num echo $ip2num ((ipnetnum= ip1num & masknum)) ((t=masknum)) for ((prefix=32; (t & 1) == 0; t /= 2)) do ((prefix--)) done ipnet=($ipnetnum) ipnet=$((ipnet >> 24)).$(((ipnet >> 16) & 255)).$(((ipnet >> 8) & 255)).$((ipnet & 255))/$prefix echo $ipnet } echo "will hang on the next line" echo "`ipAndIptoNetwork "192.168.1.0" "192.168.1.255"`"