2

我正在 Ubuntu 13.04 中编写一个 bash 脚本,它需要通过参数传递特定的秒数。我已经确保sleep允许在文档中查找浮点数:

与大多数要求 NUMBER 为整数的实现不同,这里的 NUMBER 可以是任意浮点数。

实际上,它适用于某些值。例如,“0.1”、“0.01”、“0.02”、“0.03”或“0.4”是可以的,但对于“0.04”或“0.05”等其他值则永久有效。

我的意思是,这将起作用:

sleep 0.03

...但这将永远持续下去:

sleep 0.04

有人知道为什么吗?

谢谢!

4

1 回答 1

1

这可能是 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'
于 2013-05-11T19:18:31.530 回答