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
コマンド、覚えましたし。