Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: teller in terminal  (gelezen 1119 keer)

Offline thailand

  • Lid
teller in terminal
« Gepost op: 2017/04/07, 06:30:58 »
 Dit is een scriptje dat ik gevonden heb op internet.
 Het probleem hier is het volgende:
 Wanneer de minuten aan 60 komen dan telt hij bij de uren 1 bij,
 maar de minuten laat hij door lopen in  plaats van dat de minuten terug vanaf nul beginnen.
 Bij de seconden doet hij het wel goed.
Kan iemand dit oplossen?
dank u.
 
 #**********************
BEGIN=$(date +%s)
 
#echo Starting Stopwatch...
 
while true; do
   NOW=$(date +%s)
   let DIFF=$(($NOW - $BEGIN))
   let MINS=$(($DIFF / 60))
   let SECS=$(($DIFF % 60))
   let HOURS=$(($DIFF / 3600))
   let DAYS=$(($DIFF / 86400))
 
   # \r  is a "carriage return" - returns cursor to start of line
   printf "\r %02d:%02d:%02d" $DAYS $HOURS $MINS $SECS
   sleep 0.25
done
exit 0
#************************************

Re: teller in terminal
« Reactie #1 Gepost op: 2017/04/07, 10:22:22 »
Vreemd, bij mij lopen de seconden en gaan na de 60 weer naar de 0, zonder dat het minuutveld wordt opgehoogd.

Een script dat erg op het jouwe lijkt, doet het wel goed (ook op internet gevonden).

#!/bin/bash

BEGIN=$(date +%s)
BACK="\b\b\b\b"

echo Starting Stopwatch...

while true; do
        NOW=$(date +%s)
        let DIFF=$(($NOW - $BEGIN))
        let MINS=$(($DIFF / 60))
        let SECS=$(($DIFF % 60))

#only echo count if its different than the last time
if [ "$DIFF" != "$OLDDIFF" ]
then
        #backspace 4 times to reset stopwatch position
        #The '-e' enables \b to be interpreted correctly
        #The '-n' avoids the newline character at the end
        echo -ne $BACK
        echo -ne $MINS:`printf %02d $SECS`
fi

#define olddiff to current diff
let OLDDIFF=DIFF

done

nahjo

  • Gast
Re: teller in terminal
« Reactie #2 Gepost op: 2017/04/07, 10:47:43 »
zo loopt het bij mij goed al heb ik geen uur gewacht  ;)

#**********************
BEGIN=$(date +%s)
 
#echo Starting Stopwatch...
 
while true; do
   NOW=$(date +%s)
   let DIFF=$(($NOW - $BEGIN))
   let MINS=$((($DIFF / 60) % 60))
   let SECS=$(($DIFF % 60))
   let HOURS=$((($DIFF / 3600) % 24))
   let DAYS=$(($DIFF / 86400))
 
   # \r  is a "carriage return" - returns cursor to start of line
   printf "\r %02d:%02d:%02d:%02d" $DAYS $HOURS $MINS $SECS
   sleep 0.25
done
exit 0
#************************************

Offline thailand

  • Lid
Re: teller in terminal
« Reactie #3 Gepost op: 2017/04/07, 15:18:10 »
Dit lost het op
Ik moet bij minuten / 60 % 60 doen.
Dank u wel.
Dit is opgelost.