gpt4 book ai didi

bash - 在 Bash 循环中生成 IP 地址列表

转载 作者:行者123 更新时间:2023-11-29 08:48:06 25 4
gpt4 key购买 nike

我需要一个从 130.15.0.0 到 130.15.255.255 的 IP 地址列表。我试过了,但我意识到它会创建 255 个列表。谁能帮我解决这个问题?

for (( i = 0; i <= 255; i++)) ; do
for (( j = 0; j <= 255; j++)) ; do
LIST="$LIST 130.15.$i.$j"
done
done

最佳答案

我会说你的方法行得通,但速度很慢1。您可以改用大括号扩展:

echo 135.15.{0..255}.{0..255}

或者,如果你想把结果放在一个变量中,只需赋值:

list=$(echo 135.15.{0..255}.{0..255})

如果你想要数组中的地址,你可以跳过 echo 和命令替换:

list=(135.15.{0..255}.{0..255})

现在,list 是一个合适的数组:

$ echo "${list[0]}"                    # First element
135.15.0.0
$ echo "${list[@]:1000:3}" # Three elements in the middle
135.15.3.232 135.15.3.233 135.15.3.234

对您的代码的评论:

  • 代替

    list="$list new_element"

    附加到字符串更容易
    list+=" new_element"
  • 如果你想在循环中附加到一个数组,你会使用

    list+=("new_element")
  • 不推荐使用大写变量名,因为它们更可能与环境变量发生冲突(参见 POSIX spec,第四段)

1 事实上,在我的机器上,这几乎需要 6 分钟——大括号展开时间不到 0.1 秒!

关于bash - 在 Bash 循环中生成 IP 地址列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40324698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com