Générer des nombres aléatoires en bash avec des exemples

Générer des nombres aléatoires en bash avec des exemples

Lors du codage de scripts bash - en particulier lors du développement de scripts pour les tests de fonctionnalité - nous devons parfois générer un nombre aléatoire ou une entrée aléatoire. Ces nombres peuvent également devoir être dans une plage spécifique. Cet article vous apprendra à effectuer une génération de nombres aléatoires dans Bash.

Dans ce tutoriel, vous apprendrez:

  • Comment générer des nombres aléatoires en bash
  • Comment générer des nombres aléatoires est une plage spécifique
  • Exemples démontrant une génération de nombres aléatoires à bash
Générer des nombres aléatoires en bash avec des exemples

Exigences et conventions logicielles utilisées

Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Indépendant de la distribution Linux
Logiciel Ligne de commande bash, système basé sur Linux
Conventions # - nécessite que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - exige que les commandes Linux soient exécutées en tant qu'utilisateur régulier non privilégié

Exemple 1: Génération d'un nombre aléatoire en utilisant le générateur aléatoire



Générons un nombre aléatoire en bash:

$ echo $ aléatoire 24758 $ echo $ aléatoire 13 

C'était simple n'était pas ça?

Il y a cependant quelques défis avec cette approche; il n'est pas très utilisable dans le mesure du statut: le nombre aléatoire pourrait être 1 ou 32000. Il convient également de noter que si le nombre retourné semble aléatoire, il est en fait influencé par la façon dont la variable d'entropie aléatoire (Aléatoire =) est initialisé. Ce sera l'objectif d'un autre article. Un exemple rapide de la façon dont vous pouvez le rendre plus aléatoire serait;

$ Aléatoire = 1 $ echo $ aléatoire 16807 $ aléatoire = 1 $ echo $ aléatoire 16807 $ aléatoire = $ (date +% s% n | cut -b10-19) $ echo $ aléatoire 18991 $ aléatoire = $ (date +% s % N | Cut -B10-19) $ echo $ aléatoire 11045 

Notez que le nombre aléatoire 16807 n'est pas vraiment aléatoire, car le générateur aléatoire a été ensemencé avec le même 1.

Le Aléatoire = $ (date +% s% n | coupe -b10-19) La commande est un bien meilleur semence d'entropie de générateur aléatoire basé sur la deuxième et la Nanoseconde Time.

Exemple 2: nombres dans une plage

La sélection de nombres aléatoires dans une plage est simple. Générons un nombre aléatoire entre 1 et 113:

$ echo $ (($ random% 113 + 1)) 50 $ echo $ (($ random% 113 + 1)) 17 $ echo $ (($ random% 113 + 1)) 95 

Et nous pouvons également utiliser une alternative Syntaxe / Commande. Cette fois, nous générerons un nombre aléatoire entre 1 et 117:

$ echo $ [$ aléatoire% 117 + 1] 113 $ echo $ [$ aléatoire% 117 + 1] 71 $ echo $ [$ aléatoire% 117 + 1] 10 

Pour augmenter le minimum d'une plage donnée, vous pouvez simplement augmenter le +1 à un nombre plus élevé.

Veuillez considérer l'exemple suivant, générant un nombre aléatoire entre 11 et 30:

$ echo $ [$ random% 20 + 11] 21 

Conclusion

Dans cet article, nous avons appris à générer un nombre aléatoire dans Bash, dans n'importe quelle gamme préférée. Nous avons également abordé brièvement la façon dont l'aléatoire de Bash fonctionne via une graine d'entropie initialisée au hasard.

Montrez-nous une partie de votre $ Aléatoire Créations dans les commentaires ci-dessous! Apprécier!

Tutoriels Linux connexes:

  • Gestion de la saisie des utilisateurs dans les scripts bash
  • Choses à installer sur Ubuntu 20.04
  • Comment configurer un serveur OpenVPN sur Ubuntu 20.04
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Masterring Bash Script Loops
  • Boucles imbriquées dans les scripts bash
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Liste des meilleurs outils Kali Linux pour les tests de pénétration et…
  • Mint 20: Mieux que Ubuntu et Microsoft Windows?
  • Système linux hung? Comment s'échapper vers la ligne de commande et…