【发布时间】:2011-12-07 03:40:59
【问题描述】:
以下内容不起作用:
/bin/sleep $(printf ".%02ds" $(( $RANDOM % 100 )))
- POSIX sleep 仅支持整数秒
- 没有
$RANDOM
我可以通过以下方式随机模拟:
RAND255=$(od -An -N1 -t u1 /dev/urandom)
另一种选择是编写一个小的 C 程序,该程序利用 usleep() 和 *rand*() 的建议,如 @dmckee 和 @Keith Thompson 所建议的那样。部署这样的程序可能并不总是可行的。
有没有更好的方法,即在 POSIX 中,除了手写 C 程序之外,有没有一种可以接受几分之一秒的睡眠替代方法,是否有更好的方法来模拟 $RANDOM除了od?
【问题讨论】:
-
好吧,鉴于从
/dev/random读取可能会阻塞任何时间,我不确定这是否会奏效。或者,也许只是读取对于您的需要来说是足够随机的 :) -
@Mat:谢谢。我已经更新了问题
-
这是在 Unix.SE 上以Lightweight utility/program to run a command after a random delay 处理的,我提供了a programming answer。
标签: shell random posix sleep sh