我需要一个可以使用毫秒的计时器。我尝试在脚本中使用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
}
答案 0 :(得分:31)
确保您在Bash中运行脚本,而不是/bin/sh
。例如:
#!/usr/bin/env bash
sleep 0.1
换句话说,尝试明确指定shell。然后按:./foo.sh
或bash 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