Bash睡眠毫秒

时间:2015-08-25 17:14:00

标签: bash timer sleep

我需要一个可以使用毫秒的计时器。我尝试在脚本中使用sleep 0.1命令我看到错误消息:

syntax error: invalid arithmetic operator (error token is ".1")

当我在终端中运行sleep 0.1时,它可以正常工作。

请帮助我!

编辑: 对不起,我犯了一个错误:

function timer
{
while [[ 0 -ne $SECS ]]; do
    echo "$SECS.."
    sleep 0.1
    SECS=$[$SECS-0.1]
done
}

sleep 0.1为第5,SECS=$[$SECS-0.1]为第6。我只是乱码。问题出在第6行,因为bash无法使用浮点数。我改变了我的功能如下:

MS=1000
function timer
{
while [[ 0 -ne $MS ]]; do
    echo "$SECS.."
    sleep 0.1
    MS=$[$MS-100]
done
}

3 个答案:

答案 0 :(得分:31)

确保您在Bash中运行脚本,而不是/bin/sh。例如:

#!/usr/bin/env bash
sleep 0.1

换句话说,尝试明确指定shell。然后按:./foo.shbash foo.sh运行。

如果sleep是别名或函数,请尝试将sleep替换为\sleep

答案 1 :(得分:3)

一些选项:

read -p "Pause Time .5 seconds" -t 0.5

read -p "Continuing in 0.5 Seconds...." -t 0.5
echo "Continuing ...."

答案 2 :(得分:0)

Bash抱怨小数值,

  

读:0.5:无效的超时规范

我找到了this解决方案,效果很好。

sleep_fraction() {
  /usr/bin/perl -e "select(undef, undef, undef, $1)"
}

sleep_fraction 0.01428