linux - 在 Linux bash 中, sleep 一定的数字会永远持续下去

标签 linux bash ubuntu floating-point sleep

我正在 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/

相关文章:

c++ - 为什么在 Linux 上出现错误 "no matching function for call to A::A(A)"而在 Windows 上却没有

.net - 将 PowerBuilder 数据窗口显示为 PDF 的网页

linux - Centos shell 脚本 - 对以相同字符串开头的文件进行分组

php - Ubuntu Web 服务器上 CodeIgniter 的文件权限

python - 如何处理 ImportError : cannot import name 'pytree' from 'jaxlib' of using jax?

php - Linux终端中批量替换字符串

linux - 通过单个命令行操作确定操作系统

linux - bash 中的浮点/科学记数法值错误

linux - 查找一个字符串并添加之前保存在变量中的多行字符串

ubuntu - 在 Ubuntu (django) 上安装比萨