45 lines
644 B
Bash
45 lines
644 B
Bash
|
#!/bin/bash
|
||
|
|
||
|
fail()
|
||
|
{
|
||
|
printf "${@}\n" >&2
|
||
|
exit 1
|
||
|
}
|
||
|
|
||
|
FRAMES=()
|
||
|
while [ -n "${1}" ]
|
||
|
do
|
||
|
case "${1}" in
|
||
|
-p)
|
||
|
PERIOD="${2}"
|
||
|
shift 2;;
|
||
|
-f)
|
||
|
FILE="${2}"
|
||
|
IFS="\n"
|
||
|
while read LINE
|
||
|
do
|
||
|
FRAMES+=("${LINE}")
|
||
|
done < "${FILE}"
|
||
|
shift 2;;
|
||
|
*)
|
||
|
SEPARATOR="${1:0:1}"
|
||
|
INPUT="${1:1}${SEPARATOR}"
|
||
|
while [ -n "${INPUT}" ]
|
||
|
do
|
||
|
FRAMES+=("${INPUT%%${SEPARATOR}*}")
|
||
|
INPUT="${INPUT#*${SEPARATOR}}"
|
||
|
done
|
||
|
shift;;
|
||
|
esac
|
||
|
done
|
||
|
[ -n "${PERIOD}" ] || PERIOD=0.2
|
||
|
[ -n "${FRAMES}" ] || fail "Syntax: ${0} [ -p PERIOD ] FRAMES"
|
||
|
N=0
|
||
|
|
||
|
while true
|
||
|
do
|
||
|
printf "\r${FRAMES[$N]}"
|
||
|
N=$(((N + 1) % ${#FRAMES[@]}))
|
||
|
sleep $PERIOD
|
||
|
done
|