Estoy tratando de imprimir una n
palabra de letra aleatoria , donde ingreso n
desde la línea de comando, pero por alguna razón mi script me da la misma respuesta cada vez que uso el mismo valor para n
.
#!/bin/bash
num=$1
egrep "^.{$num}$" /usr/share/dict/words | head -n $RANDOM| tail -n 1
Estoy llamando a mi script como:
$ bash var3.sh 5
étude # always the same output when using 5
$ bash var3.sh 3
zoo # always the same output when using 3
donde var3.sh
está el nombre de mi script y 5 es la longitud de la palabra que quiero imprimir al azar.
¿Cómo consigo que imprima una palabra verdaderamente al azar?
shuf
o sort -R
como se sugiere en las respuestas. También puede usar $RANDOM
, pero de una manera más avanzada. Todas estas herramientas producen resultados que pueden predecirse (no son realmente aleatorios), pero son lo suficientemente rápidos y buenos para muchos propósitos.
$RANDOM
es bastante probable que sea mayor que el número de palabras n- letter para la mayoría de los valores de n (95.7% del tiempo para n = 3 para mí).