2015-08-25 35 views
8

Ben milisaniye ile çalışacak bir zamanlayıcı gerekir.Bash uyku

syntax error: invalid arithmetic operator (error token is ".1")

ben terminali içinde sleep 0.1 çalıştırdığınızda iyi çalışıyor: Ben hata iletisi görebilirsiniz komut sleep 0.1 komutunu kullanmaya çalıştı.

bana yardım edin!

DÜZENLEME: Üzgünüm bir hata almak zorunda:

function timer 
{ 
while [[ 0 -ne $SECS ]]; do 
    echo "$SECS.." 
    sleep 0.1 
    SECS=$[$SECS-0.1] 
done 
} 

Hat sleep 0.1 5 ve SECS=$[$SECS-0.1] 6 oldu. Sadece çizgiler çizdim. Sorun 6. sıradaydı, çünkü bash yüzer sayılarla çalışmaz. Ben aşağıdaki gibi benim işlevini değiştirdi:

MS=1000 
function timer 
{ 
while [[ 0 -ne $MS ]]; do 
    echo "$SECS.." 
    sleep 0.1 
    MS=$[$MS-100] 
done 
} 
+2

Ne shell script çalışıyor? '/ Bin/sh' ve'/bin/bash' değil mi? Komut dosyası bir kabuk betiği bile mi? –

+0

'sleep' bir sözdizimi hatası vermeyecek. Lütfen hatayı üreten minimal bir komut gösteriniz. – chepner

+0

Lütfen betiğinizin ilk satırını ekleyin ve komut dosyasını nasıl başlattığınızı gösterin. – Cyrus

cevap

12

Dene:

#!/bin/bash 
sleep 0.1 

açıkça kabuk belirterek (aynı zamanda \sleep ile sleep değiştirmeyi deneyin). ./foo.sh veya bash foo.sh:

Sonra yoluyla çalıştırın.

1

bazı seçenekler:

read -p "Pause Time .5 seconds" -t 0.5 

veya

read -p "Continuing in 0.5 Seconds...." -t 0.5 
echo "Continuing ...."