我需要一个从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)
对您的代码的评论:
代替
list="$list new_element"
Run Code Online (Sandbox Code Playgroud)
附加到字符串更容易
list+=" new_element"
Run Code Online (Sandbox Code Playgroud)如果你想在循环中附加到一个数组,你可以使用
list+=("new_element")
Run Code Online (Sandbox Code Playgroud)1事实上,在我的机器上,它需要将近6分钟 - 支架扩展需要不到0.1秒!