Ответ 1
Я бы сказал, что ваш подход работает, но он очень медленный 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, параграф 4)
1 Фактически, на моей машине это занимает почти шесть минут. ndash; расширение скобки занимает менее 0,1 секунды!