for loops
Rob Tulloh
robtu at itx.isc.com
Sat Apr 6 05:30:01 AEST 1991
miquels at maestro.htsa.aha.nl (Miquel van Smoorenburg) writes:
>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?
>POSIX states that sh(1) should be able to evaluate expressions,
>so you can do something like
>while [ $FILES != 0 ]
>do
> echo -n '* '
> FILES=$[$FILES - 1]
>done
>But I haven't seen a sh anywhere that is already capable of doing this
>(not even the one I am writing myself for Minix... yet.).
>Maybe somebody knows if a new ksh can do this?
In the version of ksh running on the RS/6000, the following is possible:
typeset -i FILES=10
while [ $i -gt 0 ] ; do
# body of loop
FILES=FILES-1
done
or the following:
typeset -i FILES=10
while ((i > 0)) ; do
# body of loop
FILES=FILES-1
done
or if you want to be more specific:
typeset -i FILES=10
while ((i > 0)) ; do
# body of loop
let FILES=FILES-1
done
The typeset -i forces FILES to be interpreted as an integer and allows
you to forgo the use of $var and the let syntax. let is a shell builtin
which uses (( and )) as shorthand much the same way test uses [ and ].
Rob Tulloh
--
INTERACTIVE Systems Corp. Tel: (512) 343 0376 Ext. 116
9442 Capital of Texas Hwy. North Fax: (512) 343 0376 Ext. 161 (not a typo!)
Arboretum Plaza One, Suite 700 Net: robertt at isc.com (polled daily)
Austin, Texas 78759 GEnie: R.TULLOH (polled monthly)
More information about the Comp.unix.shell
mailing list