Я пытаюсь напечатать случайное n
буквенное слово, которое вводится n
из самой командной строки, но по какой-то причине мой сценарий дает мне один и тот же ответ каждый раз, когда используется одно и то же значение для n
.
#!/bin/bash
num=$1
egrep "^.{$num}$" /usr/share/dict/words | head -n $RANDOM| tail -n 1
Я называю свой сценарий так:
$ bash var3.sh 5
étude # always the same output when using 5
$ bash var3.sh 3
zoo # always the same output when using 3
где var3.sh
- имя моего сценария, а 5 - длина слова, которое я хочу напечатать случайным образом.
Как заставить его напечатать действительно случайное слово?
shuf
или sort -R
как предложено в ответах. Вы также можете использовать $RANDOM
, но более продвинутым способом. Все эти инструменты дают результаты, которые можно прогнозировать (они не являются действительно случайными), но они быстры и достаточно хороши для многих целей.
$RANDOM
скорее всего, будет больше, чем количество n- буквенных слов для большинства значений n (95,7% времени для n = 3 для меня).