Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- countdown() {
- STARTTIME=$(date +%s%N)
- MAXTIME=$1
- ACCURACY=${2:-0.10}
- NUMLEN=${#1}
- BANLEN=$(( ${COLUMNS:-$(tput cols)} - $NUMLEN - 9 ))
- SPINNER=("/" "-" "\\" "|")
- N=0
- [ $MAXTIME != "${MAXTIME//[^0-9]}" -o -n "$MAXTIME" ] || echo "Usage: $(basename $0) <seconds> [accuracy]"
- ENDTIME=$(( $STARTTIME + ${MAXTIME}000000000 ))
- NEWTIME=$(date +%s%N)
- while [ "$NEWTIME" -lt "$ENDTIME" ] ; do
- PCT=$(( 100 * $SECONDS / $MAXTIME ))
- FULL=$(( $BANLEN * $SECONDS / $MAXTIME ))
- EMPTY=$(( $BANLEN - $FULL ))
- let N++
- tput cr; tput el
- printf "%${NUMLEN}d [" "$(( $MAXTIME - $SECONDS ))"
- for (( X=0 ; X < FULL ; ++X )); do echo -n "${SPINNER[$(( $N % ${#SPINNER[@]} ))]}"; done
- #echo -n "${SPINNER[$(( $N % ${#SPINNER[@]} ))]}"
- for (( X=0 ; X < EMPTY ; ++X )); do echo -ne '-'; done
- printf "] %3d%%" "$PCT"
- sleep $ACCURACY
- NEWTIME=$(date +%s%N)
- done
- echo
- }
Add Comment
Please, Sign In to add comment