如何将cidr ip范围填充为bash脚本

如何将cidr ip范围填充为bash脚本,bash,ip,cidr,Bash,Ip,Cidr,在文件中有CIDR范围的列表。 如果它们是有效的,则其中一些不是“格式良好的”,但一些程序不会接受它们 示例:192.168/24 解析为:192.168.0.0/24 所以,在这种情况下,应该检查是否有4个八位组。 如果没有,脚本应该为每个缺少的脚本应用.0 1.1.1/24变为1.1.1.0/24 2.2/16变为2.2.0.0/16 谢谢:-)诀窍是 将(部分)地址拆分为数组 在数组末尾追加4个零 获取结果数组的前四个元素,并使用 例如: cidr=192.168/24 IFS=. re

在文件中有CIDR范围的列表。 如果它们是有效的,则其中一些不是“格式良好的”,但一些程序不会接受它们

示例:192.168/24

解析为:192.168.0.0/24

所以,在这种情况下,应该检查是否有4个八位组。 如果没有,脚本应该为每个缺少的脚本应用.0

1.1.1/24变为1.1.1.0/24

2.2/16变为2.2.0.0/16

谢谢:-)

诀窍是

  • 将(部分)地址拆分为数组
  • 在数组末尾追加4个零
  • 获取结果数组的前四个元素,并使用
  • 例如:

    cidr=192.168/24
    IFS=. read -a octets <<< "${cidr%/*}"
    octets+=(0 0 0 0)
    printf -v network "%d.%d.%d.%d" "${octets[@]:0:4}"
    printf '%s/%d\n' "$network" "${cidr#*/}"
    
    cidr=192.168/24
    如果=。读a八位组