Estou tentando imprimir uma n
palavra de letra aleatória , onde insiro a n
partir da própria linha de comando, mas, por alguma razão, meu script está me dando a mesma resposta sempre que usar o mesmo valor para n
.
#!/bin/bash
num=$1
egrep "^.{$num}$" /usr/share/dict/words | head -n $RANDOM| tail -n 1
Estou chamando meu 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
onde var3.sh
é o nome do meu script e 5 é o tamanho da palavra que eu quero imprimir aleatoriamente.
Como faço para imprimir uma palavra verdadeiramente aleatória?
shuf
ou sort -R
conforme sugerido nas respostas. Você também pode usar $RANDOM
, mas de uma maneira mais avançada. Todas essas ferramentas produzem resultados que podem ser previstos (eles não são verdadeiramente aleatórios), mas são rápidos e bons o suficiente para muitos propósitos.
$RANDOM
é bem provável que seja maior que o número de palavras com n letras para a maioria dos valores de n (95,7% do tempo para n = 3 para mim).