Bash sleep in milliseconds
I need a timer which will work with milliseconds. I tried to use sleep 0.1
command in a script, but I see this 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 made a 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
}
Solution 1:
Make sure you're running your script in Bash, not /bin/sh
. For example:
#!/usr/bin/env bash
sleep 0.1
In other words, try to specify the shell explicitly. Then run either by: ./foo.sh
or bash foo.sh
.
In case, sleep
is an alias or a function, try replacing sleep
with \sleep
.
Solution 2:
Some options:
read -p "Pause Time .5 seconds" -t 0.5
or
read -p "Continuing in 0.5 Seconds...." -t 0.5
echo "Continuing ...."