我正在Ubuntu 13.04中编写一个bash脚本,需要 sleep 参数传递的特定秒数。 我确保 sleep 允许查看文档中的浮点数:
与大多数需要NUMBER为整数的实现不同,此处NUMBER可以是任意浮点数。
确实它适用于某些价值观。例如,“0.1”,“0.01”,“0.02”,“0.03”或“0.4”都可以,但对于其他值,例如“0.04”或“0.05”,它会持续存在。
我是说, 这将有效:sleep 0.03
......但这将永远持续下去:
sleep 0.04
有谁知道为什么?
谢谢!
答案 0 :(得分:1)
这可能是睡眠命令的错误......
您也可以使用bash实现,直到该错误得到修复,在您的脚本上创建此别名,但如果您想模拟所有功能,请参阅sleep --help
。
alias sleep='read -t'
现在尝试一下:
date +"%S.%N"; sleep 0.04; date +"%S.%N";
这已经适用于ubuntu 12.10。
编辑:这不太精确,但如果您不需要睡眠命令的额外功能,也可以正常工作:function FUNCsleep() {
local delay=$1;
local beginAt=`date +"%s.%N"`;
while true; do
local now=`date +"%s.%N"`;
if((`echo "($now-$beginAt)>=$delay" |bc -l`==1));then
break;
fi;
done;
}
alias sleep='FUNCsleep'