Files
countdown/countdown.sh

70 lines
1.7 KiB
Bash
Raw Normal View History

2022-03-12 12:23:32 +01:00
#!/bin/bash
# Copyright (C) 2022 Ortega Froysa, Nicolás <nicolas@ortegas.org> All rights reserved.
# Author: Ortega Froysa, Nicolás <nicolas@ortegas.org>
#
# This software is provided 'as-is', without any express or implied
# warranty. In no event will the authors be held liable for any damages
# arising from the use of this software.
#
# Permission is granted to anyone to use this software for any purpose,
# including commercial applications, and to alter it and redistribute it
# freely, subject to the following restrictions:
#
# 1. The origin of this software must not be misrepresented; you must not
# claim that you wrote the original software. If you use this software
# in a product, an acknowledgment in the product documentation would be
# appreciated but is not required.
#
# 2. Altered source versions must be plainly marked as such, and must not be
# misrepresented as being the original software.
#
# 3. This notice may not be removed or altered from any source
# distribution.
2026-03-02 15:33:43 +01:00
set -euo pipefail
2026-03-02 15:55:53 +01:00
INLINE=0
COUNT=5
if [ $# -ge 1 ] && [ $# -le 2 ]
2026-03-02 15:38:41 +01:00
then
2026-03-02 15:55:53 +01:00
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
2022-03-12 12:23:32 +01:00
fi
2026-03-02 15:33:43 +01:00
for i in $(seq "$COUNT" -1 1)
2022-03-12 12:23:32 +01:00
do
2026-03-02 15:55:53 +01:00
if [ $INLINE -eq 0 ]
then
echo "$i"
else
printf "\r%s" "$i"
fi
2022-03-12 12:23:32 +01:00
sleep 1
done
2026-03-02 15:55:53 +01:00
if [ $INLINE -eq 0 ]
then
echo "0"
else
printf "\r%s\n" "0"
fi