Powiedziałbym, że podejście działa, ale jest bardzo powolny . Można użyć rozwijanie nawiasów Zamiast:
echo 135.15.{0..255}.{0..255}
Albo, jeśli chcesz wynik w zmiennej, wystarczy przypisać:
list=$(echo 135.15.{0..255}.{0..255})
Jeśli chcesz adresów w tablicy można pominąć echo
i Zmiana polecenie:
list=(135.15.{0..255}.{0..255})
teraz list
jest odpowiednia macierz:
$ 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
Komentarze kodzie:
w rzeczywistości, na moim komputerze, zajmuje prawie sześć minut – rozszerzenie nawiasów trwa mniej niż 0,1 sekundy!
Czy możesz dodać uzyskane wyniki i wyjaśnić, dlaczego nie jest to oczekiwana wydajność? –
Wygląda na to, że tworzy 256 * 256 = 65536 adresów IP. Co jest nie tak? –
@Benjamin W. odpowiada na problem KU z elegancją, ale odpowiedź na pytanie KU można znaleźć tutaj (spoiler: 'LIST + = (" 130.15. $ I. $ J ")' z 'declare -a LISTA =() 'powyżej pętli) http://unix.stackexchange.com/questions/211395/in-a-loop-over-an-array-add-an-el ement-to-the-array – duanev