【发布时间】:2015-11-19 12:29:43
【问题描述】:
我需要一个能以毫秒为单位的计时器。我尝试在脚本中使用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
}
【问题讨论】:
-
运行脚本的shell是什么?是
/bin/sh而不是/bin/bash?脚本甚至是 shell 脚本吗? -
sleep不会产生语法错误。请显示产生错误的最小脚本。 -
请添加脚本的第一行并说明如何启动脚本。
-
@EtanReisner:没关系。
sleep不是内置的 bash,因此无论您使用哪个 shell,sleep 0.1都应该可以正常工作,只要您的$PATH中有合适的sleep命令即可。 -
不要只向我们展示脚本的第一行。向我们展示整个脚本。如果可能,将其修剪为产生问题的简短的独立版本(如果它超过 5 行,您可能没有修剪得足够多)。 @赛勒斯