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?
Ikon
August 15, 2008, 12:23pm
2
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
Ikon
August 15, 2008, 12:27pm
3
I appears to not work in ksh... Im checking.
Ikon
August 15, 2008, 12:31pm
4
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.