J'ai besoin d'une minuterie qui fonctionnera avec des millisecondes. J'ai essayé d'utiliser la commande sleep 0.1
dans le script. Je vois un message d'erreur:
syntax error: invalid arithmetic operator (error token is ".1")
Quand je lance sleep 0.1
dans le terminal cela fonctionne bien.
Aidez-moi, s'il vous plaît!
EDIT: Désolé j'ai pris une erreur:
function timer
{
while [[ 0 -ne $SECS ]]; do
echo "$SECS.."
sleep 0.1
SECS=$[$SECS-0.1]
done
}
La ligne sleep 0.1
était 5ème et SECS=$[$SECS-0.1]
était 6ème. Je viens de brouiller les lignes. Le problème était en 6ème ligne, parce que bash ne peut pas fonctionner avec des nombres flottants. J'ai changé ma fonction comme ci-dessous:
MS=1000
function timer
{
while [[ 0 -ne $MS ]]; do
echo "$SECS.."
sleep 0.1
MS=$[$MS-100]
done
}
Assurez-vous que vous exécutez votre script dans Bash et non pas /bin/sh
. Par exemple:
#!/usr/bin/env bash
sleep 0.1
En d'autres termes, essayez de spécifier explicitement le shell. Puis exécutez soit par: ./foo.sh
ou bash foo.sh
.
Si sleep
est un alias ou une fonction, essayez de remplacer sleep
par \sleep
.
Quelques options:
read -p "Pause Time .5 seconds" -t 0.5
ou
read -p "Continuing in 0.5 Seconds...." -t 0.5
echo "Continuing ...."
Bash se plaignait des valeurs décimales,
read: 0.5: spécification de délai d'attente non valide
Je suis venu avec ce solution qui fonctionne très bien.
sleep_fraction() {
/usr/bin/Perl -e "select(undef, undef, undef, $1)"
}
sleep_fraction 0.01428