Guest User

Untitled

a guest
Apr 23rd, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.16 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. countdown() {
  4.         STARTTIME=$(date +%s%N)
  5.         MAXTIME=$1
  6.         ACCURACY=${2:-0.10}
  7.         NUMLEN=${#1}
  8.         BANLEN=$(( ${COLUMNS:-$(tput cols)} - $NUMLEN - 9 ))
  9.         SPINNER=("/" "-" "\\" "|")
  10.        N=0
  11.  
  12.        [ $MAXTIME != "${MAXTIME//[^0-9]}" -o -n "$MAXTIME" ] || echo "Usage: $(basename $0) <seconds> [accuracy]"
  13.        ENDTIME=$(( $STARTTIME + ${MAXTIME}000000000 ))
  14.        NEWTIME=$(date +%s%N)
  15.        while [ "$NEWTIME" -lt "$ENDTIME" ] ; do
  16.                PCT=$(( 100 * $SECONDS / $MAXTIME ))
  17.                FULL=$(( $BANLEN * $SECONDS / $MAXTIME ))
  18.                EMPTY=$(( $BANLEN - $FULL ))
  19.                let N++
  20.  
  21.                tput cr; tput el
  22.                printf "%${NUMLEN}d [" "$(( $MAXTIME - $SECONDS ))"
  23.                for (( X=0 ; X < FULL  ; ++X )); do echo -n "${SPINNER[$(( $N % ${#SPINNER[@]} ))]}"; done
  24.                #echo -n "${SPINNER[$(( $N % ${#SPINNER[@]} ))]}"
  25.                for (( X=0 ; X < EMPTY ; ++X )); do echo -ne '-'; done
  26.                printf "] %3d%%" "$PCT"
  27.  
  28.                sleep $ACCURACY
  29.                NEWTIME=$(date +%s%N)
  30.        done
  31.        echo
  32. }
Add Comment
Please, Sign In to add comment