for loops
    Jonathan I. Kamens 
    jik at athena.mit.edu
       
    Thu Apr  4 07:30:23 AEST 1991
    
    
  
In article <3693 at ux.acs.umn.edu>, edh at ux.acs.umn.edu (Merlinus Ambrosius) writes:
|> In sh, I'd like to do something like a BASIC for loop.  Say I have $FILES
|> set to some number, and I'd like to go through a loop $FILES times.  Can
|> this be done in sh?
Yes.  The trick is getting from the number to that many items that you can put
into a for loop.  Something like this
	FILES=10
	for i in `jot $FILES`; do
		echo -n "*"
	done; echo ""
will print ten asterisks and then a newline, if your echo supports "-n"
and you have "jot".  If you don't have "jot", you can get it from
/help/dist on lilac.berkeley.edu.  Alternatively, you can use awk to do
the counting:
	FILES=10
	for i in `echo $FILES | awk '{for(i=0;i<$1+0;i++){print i}; exit}'`; do
		echo -n "*"
	done; echo ""
which will print the same as the loop above.
  You could also use expr and test to decrement the variable by one on each
pass through the loop and check if it's zero, but that's very inefficient
compared to the methods above, which require only one fork to set up the count
for the entire loop.
-- 
Jonathan Kamens			              USnail:
MIT Project Athena				11 Ashford Terrace
jik at Athena.MIT.EDU				Allston, MA  02134
Office: 617-253-8085			      Home: 617-782-0710
    
    
More information about the Comp.unix.shell
mailing list