我需要一个从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
我需要一个从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")
1 实际上,在我的计算机上,这需要近六分钟时间 – 大括号扩展只需要不到0.1秒钟!
declare -a LIST=()
和LIST+=("130.15.$i.$j")
)http://unix.stackexchange.com/questions/211395/in-a-loop-over-an-array-add-an-element-to-the-array - duanev