blob: 7ca02d9ba94b5f9004b43f762d4c4861943d3347 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
#!/bin/bash
# sets stdin to no echo and give a char every tenth of a sec.
stty -echo -icanon time 1 <&0
chkspace () {
if ! read -t 0 ; then return 1 ; fi # no char pressed
read -n 1 ans
if [ "$ans" = " " ]; then return 0 ; fi
case "$ans" in
r|R) COUNT=0 ; BEGIN=$(date +%s)
printf "\r%3d Days, %02d:%02d:%02d" 0 0 0 0
;;
q|Q) stty echo icanon <&0
echo ""
exit 0
;;
[1-9]) echo " - $ans" ;;
esac
return 1
}
echo "Stopwatch: to start and stop press the SPACEBAR..."
printf "\r%3d Days, %02d:%02d:%02d" 0 0 0 0
COUNT=0
IFS=
while true ; do
while true; do
if chkspace ; then break; fi
sleep 0.1
done
BEGIN=$(date +%s)
while true; do
NOW=$(date +%s)
let DIFF=$(($NOW - $BEGIN + $COUNT))
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%3d Days, %02d:%02d:%02d" $DAYS $HOURS $MINS $SECS
if chkspace ; then break; fi
sleep 0.1
done
COUNT=$DIFF
done
|