Potrzebuję timera, który zadziała z milisekundami. Próbowałem użyć polecenia sleep 0.1
w skrypcie widzę komunikat o błędzie:Bash spać w milisekundach
syntax error: invalid arithmetic operator (error token is ".1")
Kiedy biegnę sleep 0.1
w terminalu to działa dobrze.
Proszę, pomóżcie mi!
EDIT: Niestety muszę brać błąd:
function timer
{
while [[ 0 -ne $SECS ]]; do
echo "$SECS.."
sleep 0.1
SECS=$[$SECS-0.1]
done
}
Linia sleep 0.1
było 5 i SECS=$[$SECS-0.1]
był 6-ta. Po prostu zniekształcałem linie. Problem polegał na szóstej linii, ponieważ bash nie może działać z liczbami zmiennoprzecinkowymi. Zmieniłem funkcję jak poniżej:
MS=1000
function timer
{
while [[ 0 -ne $MS ]]; do
echo "$SECS.."
sleep 0.1
MS=$[$MS-100]
done
}
Co powłoka jest uruchomiony skrypt? Czy jest to '/ bin/sh', a nie'/bin/bash'? Czy skrypt jest nawet skryptem powłoki? –
'sleep' nie spowoduje błędu składni. Pokaż minimalny skrypt, który powoduje błąd. – chepner
Dodaj pierwszą linijkę skryptu i pokaż, w jaki sposób uruchamiasz skrypt. – Cyrus