ミリ秒で動作するタイマーが必要です。スクリプトで_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番目でした。私はちょうど行を文字化けしました。問題は、bashが浮動小数点数では機能しないため、6行目にありました。以下のように機能を変更しました。
_MS=1000
function timer
{
while [[ 0 -ne $MS ]]; do
echo "$SECS.."
sleep 0.1
MS=$[$MS-100]
done
}
_
/bin/sh
ではなく、Bashでスクリプトを実行していることを確認してください。例えば:
#!/usr/bin/env bash
sleep 0.1
つまり、シェルを明示的に指定してみてください。次に、./foo.sh
またはbash foo.sh
のいずれかで実行します。
sleep
がエイリアスまたは関数の場合、sleep
を\sleep
に置き換えてみてください。
いくつかのオプション:
read -p "Pause Time .5 seconds" -t 0.5
または
read -p "Continuing in 0.5 Seconds...." -t 0.5
echo "Continuing ...."
Bashは10進数値について不平を言っていましたが、
読み取り:0.5:無効なタイムアウト指定
this でうまくいく解決策を見つけました。
sleep_fraction() {
/usr/bin/Perl -e "select(undef, undef, undef, $1)"
}
sleep_fraction 0.01428