Я пытаюсь напечатать случайное 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 для меня).