Display spinning cursor while waiting

Hi All,

I have a script, very basic, that checks the the intergrity of tar files. Of course, with a huge amount of files, this might take a while. So I'd like to have the script display the spinning cursor while this happens. I'm just not sure how to go about scripting this under ksh. Can someone help me out with it?

here is a script to show a spinning cursor. You could probabally put this in a loop waiting for another script to complete.

#!/bin/bash

# paste following in your script
declare -a Spinner

Spinner=(/ - \\ \| / - \\ \| ) 
Spinnerpos=0

update_spinner()
{
    printf "\b"${Spinner[$Spinnerpos]} 
    (( Spinnerpos=(Spinnerpos +1)%8 ))
}

# testing : 

printf "Spinner :  "

update_spinner
sleep 1
update_spinner
sleep 1
update_spinner
sleep 1
update_spinner
sleep 1
update_spinner
sleep 1
update_spinner
sleep 1
update_spinner
sleep 1
update_spinner
sleep 1
update_spinner
sleep 1
update_spinner
sleep 1
update_spinner
sleep 1
update_spinner

I appears to not work in ksh... Im checking.

this works in ksh on my HP-UX

# paste following in your script
#declare -a Spinner


#Spinner=(/ - \\ \| / - \\ \| )
set -A Spinner / - \\ \| / - \\ \|
Spinnerpos=0

update_spinner()
{
    printf "\b"${Spinner[$Spinnerpos]}
    (( Spinnerpos=(Spinnerpos +1)%8 ))
}

# testing :

printf "Spinner :  "

update_spinner
sleep 1
update_spinner
sleep 1
update_spinner
sleep 1
update_spinner
sleep 1
update_spinner
sleep 1
update_spinner
sleep 1
update_spinner
sleep 1
update_spinner
sleep 1
update_spinner
sleep 1
update_spinner
sleep 1
update_spinner
sleep 1
update_spinner

I knew how to spin the cursor, but getting the signals to work took a minute...

#!/bin/ksh

cursor[0]='\|'
cursor[1]='/'
cursor[2]='-'
cursor[3]='\\'
cursor[4]='\|'
cursor[5]='/'
cursor[6]='-'

pos=0
let breakout=1
update_cursor()
{
    printf "\b"${cursor[pos]} 
    pos=$(( ( pos + 1 )  % 7 ))
}

trap "let breakout=0" USR1

#background process sleeps 10 seconds, raise USR1 signal
export this_pid=$$

# tar check goes here where sleep is
sleep 4 && kill -USR1 $this_pid &

echo "spinning cursor sort of.... \c"

while [[ $breakout -eq 1 ]]
do 
  update_cursor
  sleep 1
done

oops - ikon beat me to it...

Thanks all! I appreciate the help. I'm playing with the script now to see how it works for me. :slight_smile: