Chaine aleatoire script SHELL
Générer une chaine de charactère de longueur prédéfine en pur script Shell.
En toute rigueur, les résultats obtenus grace à la méthode décrite sont des résultat pseudo aléatoires.
En effet, nous nous baserons sur la variable $RANDOM, qui est par définition pseudo-aléatoire.
Quand une portion de texte est un lien, nous vous encourageons à le suivre, car il mène vers une implémentation possible de ce qui est expliqué.
Pour générer une chaine de vingt caractères aléatoires, nous allons répéter vingt fois la génération d'un caractère aléatoire.
A chaque génération, nous allonsstocker le caractère obtenu à la fin de la chaine resultat.
Nous voyons là qu'au bout de vingt itérations, nous aurons une chaine de vingt caractères.
Pour cela, veiller à ce que le "shebang" soit bien sur BASH.
Un bon moyen est de lister dans une chaine que nous allons appeler "chaine modèle" les caractères aceptés.
Juste pour voir comment on opère la concaténation, nous pouvons faire un test.
Remarquer que pour générer une "séquence de 20", nous n'avons pas encore utilisé le "modèle", nous nous sommes contenté de générer vingt "X".
Il est possible d'en obtenir la longueur, et donc d'obtenir un nombre aléatoire compris entre zéro et ladite longueur.
Si, dans la chaine M, à partir du x-ème caractère on veut y caractères, alors cela s'écrit: ${M:x:y}.
Dans notre cas, nous souhaitons que x soit aléatoire mais ne dépassant pas la longueur de M et que y soit à 1.
Au point ou nous en sommes, nous savons générer une lettre aléatoire.
Il reste à mettre le tout dans la boucle FOR, pour obtenir les vingt caractères aléatoires.
En effet, nous nous baserons sur la variable $RANDOM, qui est par définition pseudo-aléatoire.
Quand une portion de texte est un lien, nous vous encourageons à le suivre, car il mène vers une implémentation possible de ce qui est expliqué.
Algorithme
Nous allons partir d'une chaine vide, qui sera la chaine resultat.Pour générer une chaine de vingt caractères aléatoires, nous allons répéter vingt fois la génération d'un caractère aléatoire.
A chaque génération, nous allonsstocker le caractère obtenu à la fin de la chaine resultat.
Nous voyons là qu'au bout de vingt itérations, nous aurons une chaine de vingt caractères.
Implémentation
Shell: BASH
Nous allons utiliser une syntaxe BASH, qui peut ne pas etre supportée par les "simples" ShellsPour cela, veiller à ce que le "shebang" soit bien sur BASH.
Modèle: seulement des lettres
Il nous faut savoir quels caractères prendre et accepter dans notre chaine.Un bon moyen est de lister dans une chaine que nous allons appeler "chaine modèle" les caractères aceptés.
Itération: boucle "for"
Pour répéter un nombre de fois bien défini la même chose, la boucle FOR est l'outil adapté.Juste pour voir comment on opère la concaténation, nous pouvons faire un test.
Remarquer que pour générer une "séquence de 20", nous n'avons pas encore utilisé le "modèle", nous nous sommes contenté de générer vingt "X".
Manipulation de chaine: modificateurs
Prenons maintenant à part la chaine modèle ($M).Il est possible d'en obtenir la longueur, et donc d'obtenir un nombre aléatoire compris entre zéro et ladite longueur.
Si, dans la chaine M, à partir du x-ème caractère on veut y caractères, alors cela s'écrit: ${M:x:y}.
Dans notre cas, nous souhaitons que x soit aléatoire mais ne dépassant pas la longueur de M et que y soit à 1.
Au point ou nous en sommes, nous savons générer une lettre aléatoire.
Il reste à mettre le tout dans la boucle FOR, pour obtenir les vingt caractères aléatoires.