Works on Bash only
cidr2dec() { cidr=$1 totalmask= ; bits= for ((i=$cidr; $i>0; i--)); do bits="${bits}1" ; done for ((i=$((32 - $cidr)); $i>0; i--)); do bits="${bits}0" ; done for i in 1 9 17 25; do bitmask=$(echo $bits |cut -c${i}-$(($i + 7))) totalmask=${totalmask}$(echo 'obase=10; ibase=2;' $bitmask |bc). done echo ${totalmask%%.} }
$ for i in 16 24 26 27 32 ; do cidr2dec $i ; done 255.255.0.0 255.255.255.0 255.255.255.192 255.255.255.224 255.255.255.255