
スクリプトを 20 秒から 10 秒の間でランダムに一時停止させようとしています。最大時間は 20 秒、最小時間は 10 秒です。現在はこれを使用しています:
sleep $((10 + RANDOM % 20));
しかし、問題は 20 という制限を無視してそれを超えてしまうことです。他の方法はあるのでしょうか?
答え1
10 と 20 は RANDOM 数の最小値と最大値ではありません。この式は単純な数学です。%
モジュロを意味します。
あなたが望む
sleep $((10 + RANDOM % 11));
11
10から20までが11個の数字だからです。
あるいは、以下を使用することもできますshuf
:
sleep $(shuf -i 10-20 -n 1)
答え2
ランダムなミリ秒のスリープ
t=$(shuf -i 0-9 -n1)
sleep 0."$t"