I need a timer which will work with milliseconds. I tried to use sleep 0.1
command in script I see error message:
syntax error: invalid arithmetic operator (error token is ".1")
When I run sleep 0.1
in terminal it works fine.
Please help me!
EDIT: Sorry I have take an mistake:
function timer
{
while [[ 0 -ne $SECS ]]; do
echo "$SECS.."
sleep 0.1
SECS=$[$SECS-0.1]
done
}
Line sleep 0.1
was 5th and SECS=$[$SECS-0.1]
was 6th. I just garbled lines. The problem was in 6th line, because bash can't work with float numbers. I changed my function as below:
MS=1000
function timer
{
while [[ 0 -ne $MS ]]; do
echo "$SECS.."
sleep 0.1
MS=$[$MS-100]
done
}
Bash was complaining about decimal values,
I came around with this solution which works great.
Make sure you're running your script in Bash, not
/bin/sh
. For example:In other words, try to specify the shell explicitly. Then run either by:
./foo.sh
orbash foo.sh
.In case,
sleep
is an alias or a function, try replacingsleep
with\sleep
.Some options:
or