Bash でランダムな値を得る「shuf」コマンド
Bash スクリプトの中で、乱数が欲しいと思った。大抵の環境には shuf というコマンドが入っていて、コレを使うと簡単にランダムな値を作れるので紹介。
# 10~30 の値の中で、一つランダムに値を取得する
$ shuf -i 10-30 -n 1
18
# ↑ 出力例
こんな感じで使える。
-i オプションの後に 1-15 のように整数の範囲を指定すると、その範囲内の整数が取得できる。
-n オプションで出力する値の数を設定できる。複数の乱数を出力する場合は以下のようになる。
# 5つ値を取り出す
$ shuf -i 10-30 -n 5
26
25
22
10
16
# 範囲よりも大きい数を指定した場合は…
$ shuf -i 11-13 -n 10
11
13
12
最後の出力例で分かったかと思うが、この shuf コマンド、「乱数を生成する」のではなく、「与えられた値をシャッフルして返している」のが正しい。seq コマンドが「指定範囲の数値を順に出力する」のと比べると似ていて分かりやすいと思う。
$ seq 11 13
11
12
13
まぁとりあえず、コレで「ランダムにいずれかの値が欲しい」という要望は満たせたので、shuf コマンド、覚えましたし。