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