2015-08-25 10 views
8

मुझे एक टाइमर चाहिए जो मिलीसेकंड के साथ काम करेगा। मैं स्क्रिप्ट में sleep 0.1 आदेश का उपयोग करने की कोशिश की मैं त्रुटि संदेश दिखाई:मिलीसेकंड में बैश नींद

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

जब मैं टर्मिनल में sleep 0.1 चलाने यह ठीक काम करता है।

कृपया मेरी मदद करें!

संपादित करें: खेद है कि मैं एक गलती ले:

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

लाइन sleep 0.1 5 वीं था और SECS=$[$SECS-0.1] 6 था। मैंने बस लाइनों को खराब किया। समस्या 6 वीं पंक्ति में थी, क्योंकि बैश फ्लोट नंबरों के साथ काम नहीं कर सकता है। मैं नीचे के रूप में अपने समारोह बदल दिया है:

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

क्या खोल स्क्रिप्ट चल रहा है? क्या यह '/ bin/sh' है और'/bin/bash' नहीं है? क्या स्क्रिप्ट भी एक शेल स्क्रिप्ट है? –

+0

'नींद' एक वाक्यविन्यास त्रुटि उत्पन्न नहीं करेगा। कृपया एक न्यूनतम स्क्रिप्ट दिखाएं जो आपकी त्रुटि उत्पन्न करती है। – chepner

+0

कृपया अपनी स्क्रिप्ट की पहली पंक्ति जोड़ें और दिखाएं कि आप स्क्रिप्ट कैसे शुरू करते हैं। – Cyrus

उत्तर

12

प्रयास करें:

#!/bin/bash 
sleep 0.1 

स्पष्ट रूप से खोल निर्दिष्ट करके (भी \sleep साथ sleep की जगह की कोशिश)।

फिर या तो ./foo.sh या bash foo.sh द्वारा चलाएं।

1

कुछ विकल्प:

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

या

read -p "Continuing in 0.5 Seconds...." -t 0.5 
echo "Continuing ...." 
संबंधित मुद्दे