Linux shell 网络掩码地址转CIDR
例子:
./1.sh 255.255.255.0
./1.sh 255.255.255.128
./1.sh 255.255.0.0
源实现:
#!/bin/bash
netmask_to_cidr() {
local IFS
local -a octets
local i=0
local cidr=0
IFS='.' read -r -a octets <<< "$1"
for octet in "${octets[@]}"; do
while [ $octet -gt 0 ]; do
cidr=$((cidr + (octet & 1)))
octet=$((octet >> 1))
done
done
echo "$cidr"
}
# 将点分十进制格式的子网掩码转换为CIDR格式
netmask=$1
cidr=$(netmask_to_cidr $netmask)
echo "子网掩码 $netmask 转换为CIDR格式为: /$cidr"