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

K.U*_*K.U 13 bash

我需要一个从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
Run Code Online (Sandbox Code Playgroud)

Ben*_* W. 32

我会说你的方法有效,但速度很慢1.您可以使用大括号扩展:

echo 135.15.{0..255}.{0..255}
Run Code Online (Sandbox Code Playgroud)

或者,如果您想将结果放在变量中,只需指定:

list=$(echo 135.15.{0..255}.{0..255})
Run Code Online (Sandbox Code Playgroud)

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

list=(135.15.{0..255}.{0..255})
Run Code Online (Sandbox Code Playgroud)

现在,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
Run Code Online (Sandbox Code Playgroud)

对您的代码的评论:


1事实上,在我的机器上,它需要将近6分钟 - 支架扩展需要不到0.1秒!