for cycle


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting for cycle
# 1  
Old 02-18-2009
for cycle

Hello,

I have a question:
is there a way to have a "for" cycle done a certain number of times. For example in c++ I can do this:
for (i=o;i<10;i++)
and the cycle will be repeated 10 times.
in UNIX for example I do this:
for i in `cat /etc/host` do done
and the cycle will be repeated depending the item in the file
can something similar be done on UNIX?

thanks
# 2  
Old 02-18-2009
yes. depending on the scripting language you're using....

in ksh:

Code:
num=0

while [ $num -lt 10 ]; do

  num=$(( num + 1 ))

  echo doing something...

done

not very elegant...

in csh:

Code:
repeat 10 echo something

in perl:

Code:
for ( 0 .. 9 ){
  print "doing something\n";
  }

HTH
# 3  
Old 02-18-2009
Code:
x=1
while [[ $x -lt 10 ]] 
do
     x=$(( $x + 1 ))
done

The for () construct doesn't exist in POSIX shells, just the (shudder) c shell.
# 4  
Old 02-18-2009
Quote:
Originally Posted by jim mcnamara
Code:
x=1
while [[ $x -lt 10 ]] 
do
     x=$(( $x + 1 ))
done

The for () construct doesn't exist in POSIX shells, just the (shudder) c shell.
are you sure?

cjajohnson corrected my use of the idiom:

Code:
(( x = x + 1 ))

... saying it wasn't POSIX compliant -- and offered the x=$$(( x + a ))
instead.

I think I'll just give my answers in ksh unless the poster complains
from now on.
# 5  
Old 02-18-2009
Try it - it is correct

output with set -x
Code:
 t.sh
+ x=1
+ [[ 1 -lt 10 ]]
+ x=2
+ [[ 2 -lt 10 ]]
+ x=3
+ [[ 3 -lt 10 ]]
+ x=4
+ [[ 4 -lt 10 ]]
+ x=5
+ [[ 5 -lt 10 ]]
+ x=6
+ [[ 6 -lt 10 ]]
+ x=7
+ [[ 7 -lt 10 ]]
+ x=8
+ [[ 8 -lt 10 ]]
+ x=9
+ [[ 9 -lt 10 ]]
+ x=10
+ [[ 10 -lt 10 ]]

Code:
#!/bin/ksh

set -x
x=1
while [[ $x -lt 10 ]] 
do
     x=$(( $x + 1 ))
done

# 6  
Old 02-19-2009
thank so much guys!!!
# 7  
Old 02-19-2009
ksh, bash, zsh all accept:
Code:
for ((i=0; i < 10; i++)) 
do 
  echo $i;
done

Login or Register to Ask a Question

Previous Thread | Next Thread

7 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

For cycle, process order

Hello, I am running a script under ubuntu 16.04 I have no problem with the script. My question is general algorithm of for file command. I just need to know how for file in *.txt process works. Let's say, I wish to run the script by sorting filename: for file in *.txt do "do something in... (2 Replies)
Discussion started by: baris35
2 Replies

2. Shell Programming and Scripting

Cycle for with for-then-else

Hi, i would like to insert a if-then-else function in to cycle for -------------- cat test -------------- # cat test ALFA BETA GAMMA ----------------------- This is my script: #!/bin/bash for i in $(cat test); if ; then echo "ok" else (5 Replies)
Discussion started by: elilmal
5 Replies

3. Shell Programming and Scripting

sed problem in a for cycle

Hi, i have a problem with a sed command runned in a for cycle... I have a file named fileX which contains (i have crippled the line to minimal for easy): load data dbfoo - TOCHANGE - comment load data dbboo - TOCHANGE - comment load data dbzoo - TOCHANGE - comment ... And a file... (8 Replies)
Discussion started by: maxlamax
8 Replies

4. Shell Programming and Scripting

for cycle question

i have a question how to modify below script to generate the expect result below : test.sh #!/bin/bash for ((i=0; i < 25; i++)) do echo $1$i done current result: test.sh 20090101 200901010 200901011 200901012 200901013 200901014 200901015 200901016 200901017 200901018 (2 Replies)
Discussion started by: bleach8578
2 Replies

5. Shell Programming and Scripting

wildcard in a if cycle

hello everybody, I need help on putting a wildcard match inside an if condition (I'm using korn shell): if ] then echo ' ' echo ''$MYSEL' is not a correct option' echo ' ' else ..... i tried also #if -ne "``" and a lot of combinations of `"' but I didn't find the... (2 Replies)
Discussion started by: elionba82
2 Replies

6. Shell Programming and Scripting

For cycle

Hello, I have files in a dir. I what to create a FOR cycle that will do this FOR <condition> do file=`ls <directory> | tail -1` echo $file mv -f $file <another dir> done What I want to now is what should I put in the <condition>. The condition I want is that the FOR will execute... (3 Replies)
Discussion started by: nagomes
3 Replies

7. Shell Programming and Scripting

shell cycle

Hello I got a cycle in the script which open another scripts. if then action fi Scripts action will be running 2 times at the same time. Inside of action() is insert into the table. But what I want is that only first script can do insert into table. So how to do... (2 Replies)
Discussion started by: mape
2 Replies
Login or Register to Ask a Question