我需要一个从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
答案 0 :(得分:32)
我会说你的方法有效,但它很慢 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")
1 事实上,在我的机器上,它需要将近6分钟 - 支撑扩展需要不到0.1秒!