bits变量的值是什么意思?

时间:2019-01-03 22:18:33

标签: bash awk syntax

我正在尝试从子网掩码中获取前缀,代码如下:

mask=255.255.254.0

oct1=$(echo $mask | awk -F. '{print $1}')
oct2=$(echo $mask | awk -F. '{print $2}')
oct3=$(echo $mask | awk -F. '{print $3}')
oct4=$(echo $mask | awk -F. '{print $4}')

for i in {1..4}; do
  for j in {7..0}; do
    bits=$((oct$i & ((1 << $j)) ? 1 : 0))
    ((prefix += $bits))
  done
done
echo $prefix

这实际上有效,但是我不知道变量位的值是什么意思。

1 个答案:

答案 0 :(得分:0)

bits变量正在计算掩码的每个八位位组中的位数...它以可用于CIDR表示法的位数来表示子网掩码。

使用CIDR表示法的子网255.255.254.0的192.168.1.1示例为192.168.1.1/23。子网掩码的每个八位位组都是一个完整的字节(或8位)。 255 =所有8位均打开。因此255.255.254.0是255(8位)+ 255(8位)+ 254(7位)+ 0(0位)= 23位已打开。

相关问题