Simple while-loop problem


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Simple while-loop problem
# 8  
Old 07-23-2010
Combining the various suggestions above:

Code:
#!/bin/bash
# Output the word "Hello" exactly 20 times
i=0
while [ $i -ne 20  ]
do
       echo "Hello"
       i=$((i + 1))
done

# 9  
Old 07-23-2010
Quote:
Originally Posted by methyl
Combining the various suggestions above:

Code:
#!/bin/bash
# Output the word "Hello" exactly 20 times
i=0
while [ $i -ne 20  ]
do
       echo "Hello"
       i=$((i + 1))
done

Nope, still not working, says syntax error at line 8: 'i=$' unexpected....if it helps to know im on Solaris..
# 10  
Old 07-23-2010
Quote:
Originally Posted by linuxkid
Nope, still not working, says syntax error at line 8: 'i=$' unexpected....if it helps to know im on Solaris..
If you have bash, it should work!

If this works, I suspect you're using sh:

Code:
i=`expr $i + 1`

Is
Code:
#!/bin/bash

the first line of your script?

what does
Code:
ls -l `which bash`

show?
# 11  
Old 07-23-2010
I suppose you're invoking the script in a way that the shebang is ignored and the script is executed by the old Bourne shell on Solaris.

You will need something like this in order to make it work with the old Bourne shell:

Code:
i=0
while [ $i -ne 20  ]
do
       echo "Hello"
       i=`expr $i + 1`
done

# 12  
Old 07-23-2010
If we haven't got bash, try ksh?

Code:
#!/bin/ksh
# Output the word "Hello" exactly 20 times
i=0
while [ $i -ne 20  ]
do
       echo "Hello"
       i=$((i + 1))
done



Or as suggested earlier do it in a way which works with Bourne Shell, ksh, bash and Posix shells.
Code:
# Output the word "Hello" exactly 20 times
i=0
while [ $i -ne 20  ]
do
       echo "Hello"
       i=`expr $i + 1`
done

# 13  
Old 07-23-2010
Quote:
Originally Posted by scottn
If you have bash, it should work!

If this works, I suspect you're using sh:

Code:
i=`expr $i + 1`

Is
Code:
#!/bin/bash

the first line of your script?

what does
Code:
ls -l `which bash`

show?
1) No
2)Yes
3) no such file or directory :s

---------- Post updated at 11:36 AM ---------- Previous update was at 11:35 AM ----------

Quote:
Originally Posted by radoulov
I suppose you're invoking the script in a way that the shebang is ignored and the script is executed by the old Bourne shell on Solaris.

You will need something like this in order to make it work with the old Bourne shell:

Code:
i=0
while [ $i -ne 20  ]
do
       echo "Hello"
       i=`expr $i + 1`
done

says unknown test operator $i

---------- Post updated at 11:37 AM ---------- Previous update was at 11:36 AM ----------

Quote:
Originally Posted by methyl
If we haven't got bash, try ksh?

Code:
#!/bin/ksh
# Output the word "Hello" exactly 20 times
i=0
while [ $i -ne 20  ]
do
       echo "Hello"
       i=$((i + 1))
done



Or as suggested earlier do it in a way which works with Bourne Shell, ksh, bash and Posix shells.
Code:
# Output the word "Hello" exactly 20 times
i=0
while [ $i -ne 20  ]
do
       echo "Hello"
       i=`expr $i + 1`
done


Smilie need i say more Smilie
# 14  
Old 07-23-2010
Quote:
Originally Posted by linuxkid
[...]

Smilie need i say more Smilie
Yes,
you need to post the exact content of the script (including the modified versions you're testing), the exact command you're executing and all the output/error messages that you're getting (copy/paste, please, don't try to re-write).

Enabling xtrace/verbose output would be beneficial also, hint: add this line to your script, after the first line:

Code:
set -xv


Last edited by radoulov; 07-23-2010 at 07:47 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Simple loop using for

Dear experts, I am writing a bash script. At some point of the program I need to have 'for' loop. For simplicity I tried with some other simple code. The format of the loop is given below. k=51 m=55 for j in {$k..$m};do w=$(($j+2)) z=$(($j+9)) echo "$w, $z" done But my... (4 Replies)
Discussion started by: vjramana
4 Replies

2. Shell Programming and Scripting

a simple loop

Does any body can help me with a loop in this example? if then if then runner=$(grep "$1" "$2") runne=$(grep "$1" "$3") run=$(grep "$1" "$4") fi fi # # Message on screen... (3 Replies)
Discussion started by: bartsimpsong
3 Replies

3. UNIX for Dummies Questions & Answers

simple script with while loop getting problem

Hello forum memebers. can you correct the simple while program. #! /bin/ksh count=10 while do echo $count count='expr$count-1' done I think it will print 10 to 1 numbers but it running for indefinite times. (2 Replies)
Discussion started by: rajkumar_g
2 Replies

4. UNIX for Dummies Questions & Answers

Simple loop

I need to chmod a bunch of files with a specific extension in one directory. If I understand correctly first I would run ls command like this ls -R | grep .mp3 > /tmp/list once I have the output file I should be able to run a loop to chmod all the files in the list created. This is where... (5 Replies)
Discussion started by: eugenes18t
5 Replies

5. Shell Programming and Scripting

Simple using For loop

Hi expert, I'm using csh Code: #!/bin/csh set x = 0 set number = `awk '{array=$0} END {print array;}'` i want to use for loop to store data to $number repeatly untill x = 23 How to use c shell for loop? (2 Replies)
Discussion started by: vincyoxy
2 Replies

6. Shell Programming and Scripting

A simple (?) loop

I have what I believe is a simple programming question. I have a text file that looks like: mol 1 G:\stereo01.hin block text ... ... ... endmol 1 However, I would like a file that repeats this entire block of text several times over. The lines of text in the middle remain the same for each... (2 Replies)
Discussion started by: red baron
2 Replies

7. Shell Programming and Scripting

simple while loop

i have a script called file2 #!/bin/ksh i=0 while do echo $i >> result.txt i=`expr $i + 1` done echo "***********************" >> result ------------------------------------------------------------------- (10 Replies)
Discussion started by: ali560045
10 Replies

8. Shell Programming and Scripting

simple for loop

i have the following process running in background: when i give "ps -lef" ------------------------------------------------------------------------ user2 user1 user1 user3 user1 user4 user5 user4 user3 user4 user2 user1 user1 user3 user1 user4 (3 Replies)
Discussion started by: ali560045
3 Replies

9. Shell Programming and Scripting

Simple bash for loop problem

I'm just trying to make a script that runs in command line to echo each line in a text file. Everything i found on google is telling me to do it like this but when I run it it just echos removethese.txt and thats it. Anyone know what im doing wrong? for i in removethese.txt; do echo $i; done ... (4 Replies)
Discussion started by: kingdbag
4 Replies

10. Shell Programming and Scripting

a simple while loop

Hallo everyone I might just be being dumb, but I am using the BASH shell and cannot get the following script to work: x=0 while do echo $x x=´echo "$x + 1" | bc´ done Can anybody help me out. I am just get a repeating output saying: bc: command not found 0 + 1: command not... (5 Replies)
Discussion started by: syno
5 Replies
Login or Register to Ask a Question