La génération d'une liste d'adresses IP dans une boucle en Bash
J'ai besoin d'une liste d'adresses IP à partir 130.15.0.0 à 130.15.255.255. J'ai essayé cela, mais j'ai réalisé qu'il va créer 255 listes. Quelqu'un peut-il m'aider à comprendre cela?
for (( i = 0; i <= 255; i++)) ; do
for (( j = 0; j <= 255; j++)) ; do
LIST="$LIST 130.15.$i.$j"
done
done
- Pouvez-vous ajouter de la sortie que vous allez obtenir, et à expliquer pourquoi il n'est pas le résultat attendu?
- On dirait qu'il crée 256 * 256 = 65536 adresses ip. Alors, quel est le problème?
- W. réponses K. U de problème avec élégance, mais la réponse de K. U de la question peut être trouvée ici (spoiler:
LIST+=("130.15.$i.$j")
avecdeclare -a LIST=()
au-dessus de la boucle) unix.stackexchange.com/questions/211395/... ement-de-la-baie -
Vous devez vous connecter pour publier un commentaire.
Je dirais que votre approche fonctionne, mais il est très lent1. Vous pouvez utiliser l'attelle d'extension à la place:
Ou, si vous voulez le résultat dans une variable, il suffit d'attribuer:
Si vous voulez les adresses dans un tableau, vous pouvez sauter le
echo
et de la substitution de commande:Maintenant,
list
est un bon tableau:Commentaires sur ton code:
Au lieu de
il est plus facile d'ajouter à une chaîne avec
Si vous vouliez ajouter à un tableau dans une boucle, vous pouvez utiliser
1 En fait, sur ma machine, il faut près de six minutes – le corset prend de l'expansion de moins de 0,1 secondes!