#!/bin/sh help=""" usage: timer [option] [args] options: -c SECONDS Count down from given amount of seconds -s Start stopwatch -h Display this message """ max_seconds=86400 countdown() { start="$(( $(date '+%s') + $1))" while [ $start -ge $(date +%s) ]; do time="$(( $start - $(date +%s) ))" if [ $time -ge $max_seconds ]; then echo "Maximum number of seconds ($max_seconds) for countdown surpassed." exit fi printf '%s\r' "$(date -u -d "@$time" +%H:%M:%S)" sleep 0.1 done } stopwatch() { start=$(date +%s) while true; do time="$(( $(date +%s) - $start))" printf '%s\r' "$(date -u -d "@$time" +%H:%M:%S)" if [ $time -ge $max_seconds ]; then echo "Maximum number of seconds ($max_seconds) reached." exit fi sleep 0.1 done } no_args="true" while getopts "c:sh" arg; do case $arg in c) countdown $OPTARG;; s) stopwatch;; h) echo "$help";; *) echo "$help";; esac no_args="false" done if [ "$no_args" = "true" ]; then echo "$help" fi