
Estoy intentando que mi secuencia de comandos se detenga aleatoriamente entre 20 y 10 segundos, donde la cantidad máxima de tiempo es 20 y la mínima 10. Estoy usando este cajero automático:
sleep $((10 + RANDOM % 20));
Pero el problema es que ignora el límite de 20 y va más allá. ¿Hay otra manera?
Respuesta1
10 y 20 no son el mínimo y el máximo del número ALEATORIO. La expresión es matemática simple. %
significa módulo.
Quieres
sleep $((10 + RANDOM % 11));
Es 11
porque 10-20 son 11 números.
Alternativamente, podrías usar shuf
:
sleep $(shuf -i 10-20 -n 1)
Respuesta2
para dormir milisegundos aleatorios
t=$(shuf -i 0-9 -n1)
sleep 0."$t"