我正在 Ubuntu 13.04 中编写一个 bash 脚本,它需要 sleep 参数传递的特定秒数。 我已经确定 sleep 允许 float 查看文档:
Unlike most implementations that require NUMBER be an integer, here NUMBER may be an arbitrary floating point number.
确实它适用于某些值。例如,“0.1”、“0.01”、“0.02”、“0.03”或“0.4”是可以的,但对于“0.04”或“0.05”等其他值,它会永远持续下去。
我的意思是, 这将起作用:
sleep 0.03
...但这将永远持续下去:
sleep 0.04
谁知道为什么?
谢谢!
最佳答案
这可能是 sleep 命令的错误...
您可以选择使用 bash 实现,直到该错误被修复,在您的脚本上创建此别名,但如果您想模拟所有功能,请参阅 sleep --help
。
alias sleep='read -t'
现在尝试一下:
date +"%S.%N"; sleep 0.04; date +"%S.%N";
这已经适用于 ubuntu 12.10。
编辑:这不太精确,但如果您不需要 sleep 命令的额外功能,它也可以工作:
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'
关于linux - 在 Linux bash 中, sleep 一定的数字会永远持续下去,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16499903/