Bash Scripting: Adding runtime in a progress bar


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Bash Scripting: Adding runtime in a progress bar
# 1  
Old 02-24-2018
Bash Scripting: Adding runtime in a progress bar

I have the following code that generates a progress bar and
want to add the current execution time after the percentage
value. The current execution time is stored in the variable `runtm`

I am having a problem on how to add `runtm` in the last `printf`
or after it.

Code:
   i=0; j=0
   totfcn=$(find $ipath -type f -name *hhz*.sac | tee /tmp/wrk | wc -l)

   for stfl in $(find $ipath -type f -name *hhz*.sac); do 
      printf -v XXX "%0*d" $((60 * ++i / totfcn))
      printf "\r[%-60s]" "${XXX//0/*}"
      printf "%4d%%" $((100 * ++j / totfcn))
   done

# 2  
Old 02-24-2018
The current execution time could be formatted in grossly different ways that would require different format specifiers in a printf format string.

What is the format of the contents of the variable named runtm?

Show us some example values that might be assigned to runtm and show us the exact output you hope to produce when the variable j has the value 20, the variable totfcn has the value 50, and the variable runtm has the various example values you have provided.

Also show us how you have tried to modify the final printf statement in your code (and the output you got with the code you tried).
# 3  
Old 02-24-2018
The runtime will be of the format `hh:mm:ss`

Code:
runtm: 05:34:21

I would like things to look as follows

Code:
[*********************                     ]   55%   05:34:21

I have tried

Code:
printf "%4d%10s" $((100 * ++j / totfcn)), $runtm

and

Code:
printf "%4d%%" $((100 * ++j / totfcn))
printf "%10s" $runtm

---------- Post updated at 06:57 AM ---------- Previous update was at 05:16 AM ----------

There was a problem with one of the variables, it works ok now. So the commands are
working as they should.

Last edited by kristinu; 02-24-2018 at 06:22 AM..
# 4  
Old 02-24-2018
Quote:
Originally Posted by kristinu
The runtime will be of the format `hh:mm:ss`

Code:
runtm: 05:34:21

I would like things to look as follows

Code:
[*********************                     ]   55%   05:34:21

I have tried

Code:
printf "%4d%10s" $((100 * ++j / totfcn)), $runtm

and

Code:
printf "%4d%%" $((100 * ++j / totfcn))
printf "%10s" $runtm

---------- Post updated at 06:57 AM ---------- Previous update was at 05:16 AM ----------

There was a problem with one of the variables, it works ok now. So the commands are
working as they should.
You can combine the two working printf statements that are working into a single printf statement. The way you tried to do it didn't work because:
  • changing %% to %10s in the format statement caused it to stop printing a percent sign after the percentage completed, and
  • adding a comma after the percentage calculation either served as a no-op or caused a syntax error while trying to print a non-numeric string value with a %d format specifier (depending on which implementation of printf you invoked in your script).
To get the same output as that produced by:
Code:
printf "%4d%%" $((100 * ++j / totfcn))
printf "%10s" $runtm

with a single printf statement, use:
Code:
printf "%4d%%%10s" $((100 * ++j / totfcn)) $runtm

Note that this concatenates the two format strings into a single format string without otherwise changing any of the characters in either of the original format strings, and adding operands to be printed by each of the printfs being combined as operands in the same sequences in the combined printf command.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Progress bar

Hi Experts; Im in the process of writing a shell script for enabling an IT operations to run archiving.We use netbackup. The script is complete, though there is one bit that i need help on. Im trying to have a progess bar for the procedure.I have gone through the man page of the command in... (5 Replies)
Discussion started by: maverick_here
5 Replies

2. Shell Programming and Scripting

Perl Progress BAR

Looking for a solution to why my progress bar not working My code print "STARTED:\n "; my $pdf = CAM::PDF->new('XYZ.pdf') or die $CAM::PDF::errstr; print STDOUT "Processing File: "; open (FILE, ">bill_data.txt") || die "Unable to save Bill_data.txt file"; for my $pagenum (1 ..... (4 Replies)
Discussion started by: chakrapani
4 Replies

3. Shell Programming and Scripting

Progress bar for cp

I'm trying to use this code to get a progress bar for cp: "Can you get cp to give a progress bar like wget?" But I'm getting these errors: stat: illegal option -- c usage: stat awk: division by zero input record number 1, file source line number 4 I'm using Mac OS X 10.6... (1 Reply)
Discussion started by: pcwiz
1 Replies

4. Programming

A progress bar in C

Hello, it's me again...:eek: I need to create a progress bar in C, but i have no idea on how to do it. i want it to output something like this: Progress: 58% But i can't get it to work. Could you please post an example progress bar written in ANSI C? Thanks (4 Replies)
Discussion started by: Zykl0n-B
4 Replies

5. Shell Programming and Scripting

progress bar

hi all, in shell script (ksh), how do i write a progress bar ?? i have a script which searches files and while its searching i am currently printing out "." and if it finds what its searching for the script prints out the name of the file e.g .................. firstFile.txt... (2 Replies)
Discussion started by: cesarNZ
2 Replies

6. Shell Programming and Scripting

Progress bar

Hi friends, how can I show a progress bar for any running process in the shell script. For example when I am copying or compressing a file. Thanks. (1 Reply)
Discussion started by: dwiravi
1 Replies

7. UNIX for Advanced & Expert Users

how to have a cp progress bar?

Hi all, This is a reformed post to my earlier ones!!!!!! I would like to know how to include a progress bar while using the cp... I am copying a few huge files from cdrom but am unable to figure out ,how to give a progress bar!!!!! I checked out other sites as well,but the issue here is... (1 Reply)
Discussion started by: wrapster
1 Replies

8. UNIX for Advanced & Expert Users

progress bar

Hi all, I want to print # like that in a progress bar.. For e.g We can notice that during installation ... but,how to do that? Thnx, sakthi. (4 Replies)
Discussion started by: sakthi.abdullah
4 Replies

9. Shell Programming and Scripting

progress bar

i am trying to write a script where in it will connect to remote servers and execute remote scripts to fetch some data and ftp it back to a main server. i would like to add a script where it will show some sort of status bar until such time that the expected files have been recieved. something... (3 Replies)
Discussion started by: inquirer
3 Replies
Login or Register to Ask a Question