diff --git a/countdown.sh b/countdown.sh index ce468b4..f922cef 100755 --- a/countdown.sh +++ b/countdown.sh @@ -24,27 +24,46 @@ set -euo pipefail -if [ $# -gt 1 ] -then - echo "Too many arguments" - echo "Usage: $0 [COUNT]" - exit 1 -elif [ $# -eq 1 ] && [ "$1" = "-h" ] -then - echo "Usage: $0 [COUNT]" - exit 0 -elif [ $# -eq 1 ] && [ "$1" -le 0 ] -then - echo "COUNT must be a positive integer" - exit 1 -fi +INLINE=0 +COUNT=5 -COUNT=${1:-5} +if [ $# -ge 1 ] && [ $# -le 2 ] +then + for arg in "$@" + do + if [ "$arg" = "-i" ] + then + INLINE=1 + elif [ "$arg" = "-h" ] || [ "$arg" = "--help" ] + then + echo "Usage: $0 [-i] [COUNT]" + echo " COUNT: Number of seconds to count down from (default: 5)" + echo " -i: Inline mode (do not print each number on a new line)" + exit 0 + elif [[ "$arg" =~ [0-9]+ ]] + then + COUNT="$arg" + else + echo "Unknown argument: $arg" + exit 1 + fi + done +fi for i in $(seq "$COUNT" -1 1) do - echo "$i" + if [ $INLINE -eq 0 ] + then + echo "$i" + else + printf "\r%s" "$i" + fi sleep 1 done -echo 0 +if [ $INLINE -eq 0 ] +then + echo "0" +else + printf "\r%s\n" "0" +fi