How to break a loop if condition is met


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to break a loop if condition is met
# 8  
Old 07-16-2009
Thank you edidataguy

It worked perfectly

thank you edidataguy. you have saved me time.

Appreciate your help very much.

---------- Post updated 07-16-09 at 02:12 AM ---------- Previous update was 07-15-09 at 03:01 AM ----------

I am getting a new error now. I am using the code written by kshji

Code:
[root@localhost tmp]# more /bin/DRI_STATUS.sh
while true
do
   f=$( grep 'END OF STATUS REPORT' filename  2>/dev/null )
   # f include data if grep return some string = find something
   # f is empty string if not find
   # ofcourse you can test exit status: 0=found, != 0  =not
   if [ "$f" != "" ]
   then
           echo Condition match
           break
   fi
   echo condition not met still searching
   sleep 1  # if not so hurry to check under 1 sec, then sleep 1 = system friendly
done

echo Condition met and command to execute
[root@localhost tmp]# DRI_STATUS.sh
/bin/DRI_STATUS.sh: line 17: syntax error: unexpected end of file

It says syntax error but i couldnt find any. Can anyone point me out the error
# 9  
Old 07-17-2009
Hmmmm... interesting.
There is no "Line 17" in your script I think.
Could there be some junk at the end of file? (May be <CR><LF>)
Try giving a "return" right after the last line, like this:

echo "Condition met and command to execute"
return

Or run your script with trace to see which line is giving the error, like:
ksh -x /bin/DRI_STATUS.sh
# 10  
Old 07-19-2009
found the problem

I found the problem.

When I copied the script from the browser to directly to vi editor, some how it was saved in dos format. So even if i use vi to view the script for any control character I couldn't find any because vi was running in dos mode view. But actually there were control character at the end of each return or line.

Normally I am using Putty to ssh and using vi editor. I copied directly from browser to this vi editor while in INSERT Mode. This was the mistake.

Later I copied the script to another system which is a Ubuntu Linux and I found the Control Character when I used vi.

From the below code you can see the last line.

Code:
[omc-r@localhost bin]$ vi DRI_STATUS.sh
while true
do
   f=$( grep 'END OF STATUS REPORT' filename  2>/dev/null )
   # f include data if grep return some string = find something
   # f is empty string if not find
   # ofcourse you can test exit status: 0=found, != 0  =not
   if [ "$f" != "" ]
   then
           echo Condition match
           break
   fi
   echo condition not met still searching
   sleep 1  # if not so hurry to check under 1 sec, then sleep 1 = system friendly
done

echo Condition met and command to execute
~
~
~
~
~
~
"DRI_STATUS.sh" [readonly][dos] 16L, 507C

So anyone who gets this problem be sure to read the last line of vi editor. You might miss the Control character, if in dos view
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

awk - print when condition is met

I have a file.txt containing the following: Query= HWI-ST863:386:C5Y8UACXX:3:2302:16454:89688 1:N:0:ACACGAAT Length=100 Score E Sequences producing significant alignments: (Bits) Value ... (2 Replies)
Discussion started by: tons92
2 Replies

2. Shell Programming and Scripting

Add another condition to bash for when not met

In the below I can not seem to add a line that will add Not low if the statement in bold is not true or meet. I guess when the first if statement is true/meet then print low, otherwise print Not low in $(NF + 1). I am not sure how to correctly add this. Thank you :). if(low <= $2 && $2 <=... (5 Replies)
Discussion started by: cmccabe
5 Replies

3. Shell Programming and Scripting

Need help on how to append on the filename when condition met.

Hi All, Seeking for your assistance on how to append the specific string when $3 condion met. ex. file1.txt ar0050046b16,5,888,0,0,0,0.00,0.00,0.00,0.00,25689.55 ar0050046b16,5,0,0,0,0,0.00,0.00,0.00,0.00,25689.55 ar0050046b16,5,0,0,0,0,0.00,0.00,0.00,0.00,25689.55 expected output:... (5 Replies)
Discussion started by: znesotomayor
5 Replies

4. Shell Programming and Scripting

Getting the records once condition met

Hi All, Seeking for your assistance to get the records once the $2 met the condition. Ex. file 1.txt 123455,10-Aug-2020 07:33:37 AM,2335235,1323534,12343 123232,11-Aug-2015 08:33:37 PM,4234324,1321432,34364 Output: 123455,10-Aug-2020 07:33:37 AM,2335235,1323534,12343 What i did... (5 Replies)
Discussion started by: znesotomayor
5 Replies

5. Shell Programming and Scripting

Print specific field when condition met

Hi All, Seeking for your assistance to print all the specific field when the condition met. Ex: file1.txt 1|203|3|31243|5341|6452|623|22|00|01 3|45345|123214|6534|3423|6565|643|343|232|10 if field 1 = 1 and field 3 = 3 and field 5 = 5341 and field 6 = 6452 it will print from $1 to $10.... (2 Replies)
Discussion started by: znesotomayor
2 Replies

6. Shell Programming and Scripting

Comparing all lines in a column with another is condition is met

Sorry for this noob question, I have file with 4 columns like where columns 2 and 4 have numbers a 55 k 3 b 59 l 3 c 79 m 277 d 255 n 277 e 257 o 267 f 267 p 287 g 290 q 287 h 290 r 287 i 310 s 900 now i want to select only those rows, where values in column 4 are greater than... (4 Replies)
Discussion started by: amits22
4 Replies

7. Shell Programming and Scripting

Delete if condition met in a column

i have a table like this: id, senderNumber, blacklist ----------------------------- 1 0835636326 Y 2 0373562343 Y 3 0273646833 Y and I want to delete automatically if a new inserted row on another table consist anything on senderNumber column above using a BASH Script I... (9 Replies)
Discussion started by: jazzyzha
9 Replies

8. Shell Programming and Scripting

perl -Calling the Subroutine Only if the condition is met

Hello All, I am in the process of learning perl.I have a perl script and based on the arguments passed it would the appropriate subroutine that is defined in the script. Now, I need to check a value that is defined in the Environment variables and should call the subroutine only if the... (1 Reply)
Discussion started by: filter
1 Replies

9. UNIX for Advanced & Expert Users

While loop only if a condition is met

All, I wrote the following section of code (which logically in PHP would of worked): tmpPATH=${1} tmpTAG=${2} if then while read tmpTAG tmpPATH do fi echo $tmpTAG echo $tmpPATH if then done < ./config.cfg fi (4 Replies)
Discussion started by: Cranie
4 Replies

10. Shell Programming and Scripting

do nothing if condition is not met but not exit

Hello all, I created the below script....and it seemed to be working fine. My problem is i want the script to ignore rest of the things if my condition is not met but do not exit.... #!/bin/ksh ########################### ########################### # Set name of the listener, this... (2 Replies)
Discussion started by: abdul.irfan2
2 Replies
Login or Register to Ask a Question