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はランダムに印刷したい単語の長さです。
本当にランダムな単語を印刷するにはどうすればよいですか?
ベストアンサー1
しかし、実際にはそうではありません。ただし、$RANDOM は特に制限された長さの単語に対して大きな数字 (0 ~ 32767) を返し、その部分が grep のすべての結果を返すことができるのと同じ結果を表示しますhead
(3 の場合 my に 819 の一致のみあり/usr/share/dict/words
)。
より良い解決策は結果を混ぜることです。
egrep "^.{$num}$" /usr/share/dict/words | sort -R | tail -n 1
これは(GNU拡張)を-R
意味します。--random-sort
sort