J'essaie d'imprimer un n
mot de lettre aléatoire , où j'entre à n
partir de la ligne de commande elle-même, mais pour une raison quelconque, mon script me donne la même réponse à chaque fois lorsque j'utilise la même valeur pour n
.
#!/bin/bash
num=$1
egrep "^.{$num}$" /usr/share/dict/words | head -n $RANDOM| tail -n 1
J'appelle mon script comme:
$ bash var3.sh 5
étude # always the same output when using 5
$ bash var3.sh 3
zoo # always the same output when using 3
où var3.sh
est le nom de mon script et 5 est la longueur du mot que je veux imprimer au hasard.
Comment puis-je faire imprimer un mot vraiment aléatoire?
shuf
ou sort -R
comme suggéré dans les réponses. Vous pouvez également utiliser $RANDOM
, mais d'une manière plus avancée. Tous ces outils produisent des résultats prévisibles (ils ne sont pas vraiment aléatoires), mais ils sont rapides et suffisamment bons pour de nombreuses applications.
$RANDOM
est très probablement supérieur au nombre de mots à n lettres pour la plupart des valeurs de n (95,7% du temps pour n = 3 pour moi).