never ending loop


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting never ending loop
# 1  
Old 10-04-2006
never ending loop

Guys

I have a script like the one below. One script executes another script in a loop. but i want the other script within the main script to be executed only 3 times. the script within the main script again references the main script after its execution. plz help.

Code:
while [ $i -lt ${#wfcomp[*]} ]
do
X=`sqlplus -s batch_user/batch_user@$FUSION_SID << EOF5
  set heading off
  SET FEEDBACK OFF
  SET PAGESIZE 0
  SET LINESIZE 900
  select count(*) from FusionHC_Result where (status not in ('Online', 'Running') and CC_ALIAS = '${wfcomp[$i]}');
EOF5`
if [ $X -gt 0 ]
then
NEED TO PUT SOMETHING HERE TO MAKE THE SCRIPT BELOW TO EXECUTE ONLY 3 TIMES

$FusionHC_DIR/WFStart.ksh -----> THIS SCRIPT REFERENCES THE MAIN  SCRIPT AGAIN.

fi
((i=i+1))
done

# 2  
Old 10-04-2006
Use some kind of file based solution if your script shows a recursive behaviour.
Code:
if [ $X -gt 0 ]
then
if [ -f ".$0.run" ] ; then
  # Get the run count
  RUN=$(<.$0.run)
  if [ $RUN -ne 3 ] ; then
    $((RUN=RUN+1))
    echo $RUN > .$0.run
  else
    # cleanup
    /bin/rm -f .$0.run
    exit 0;
  fi ;
else
  # for the first run only
  echo "1" > .$0.run
fi ;

$FusionHC_DIR/WFStart.ksh -----> THIS SCRIPT REFERENCES THE MAIN  SCRIPT AGAIN.

fi

# 3  
Old 10-04-2006
thanks a lot for your reply. i will implement it and let you know
# 4  
Old 10-04-2006
another idea is to use 'fuser' [under /usr/sbin/fuser on Solaris]

Code:
#!/bin/ksh

thisFILE="$(whence ${0})"

FUSER='/usr/sbin/fuser'

echo 'running MASTER...'

typeset -i numProc=$(${FUSER} ${thisFILE} 2>/dev/null | nawk '{print NF}')

if [[ "${numProc}" -gt 3 ]]; then
   echo "Warning: no more than 3 instances of [${thisFILE}] - exiting!"
   exit 1
fi;

echo '   calling MASTER'
${thisFILE}
# $FusionHC_DIR/WFStart.ksh -----> THIS SCRIPT REFERENCES THE MAIN SCRIPT AGAIN.


Last edited by vgersh99; 10-04-2006 at 07:07 PM..
# 5  
Old 10-05-2006
guys

thanks for your replies. i tried both solutions typed here. however, i am unable to get the desired output. I think I didnt make myself clear. I will explain my scenario again. sry abt that

Code:
while [ $i -lt ${#wfcomp[*]} ]
do
X=`sqlplus -s batch_user/batch_user@$FUSION_SID << EOF5
  set heading off
  SET FEEDBACK OFF
  SET PAGESIZE 0
  SET LINESIZE 900
  select count(*) from FusionHC_Result where (status not in ('Online', 'Running') and CC_ALIAS = '${wfcomp[$i]}');
EOF5`
if [ $X -gt 0 ]
then

$FusionHC_DIR/WFStart.ksh -----> THIS HAS TO BE EXECUTED ONLY 3 TIMES AND THIS SCRIPT REFERENCES THE MAIN  SCRIPT AGAIN.

fi
((i=i+1))
done

# 6  
Old 10-05-2006
Quote:
Originally Posted by ragha81
guys

thanks for your replies. i tried both solutions typed here. however, i am unable to get the desired output. I think I didnt make myself clear. I will explain my scenario again. sry abt that
what exactly did you try and HOW given the results it's not what you're looking for?

if you look at my code... you'd see that I have '$FusionHC_DIR/WFStart.ksh' commented OUT. The script simply shows the technique and not necessarily the complete solution.

also pls explain what do you mean by 'THIS HAS TO BE EXECUTED ONLY 3 TIMES AND THIS SCRIPT REFERENCES THE MAIN SCRIPT AGAIN.'?

what is the 'MAIN SCRIPT'?
# 7  
Old 10-05-2006
thanks vgersh, what I meant was, the flow should not be transferred to the WFStart.ksh file not more than 3 times. even if X -gt 0, the condn following that should be executed not more than 3 times.

Code:
while [ $i -lt ${#wfcomp[*]} ]
do
X=`sqlplus -s batch_user/batch_user@$FUSION_SID << EOF5
  set heading off
  SET FEEDBACK OFF
  SET PAGESIZE 0
  SET LINESIZE 900
  select count(*) from FusionHC_Result where (status not in ('Online', 'Running') and CC_ALIAS = '${wfcomp[$i]}');
EOF5`
if [ $X -gt 0 ]
then

$FusionHC_DIR/WFStart.ksh -----> Flow should be transferred here maximum 3 times. THIS HAS TO BE EXECUTED ONLY 3 TIMES AND THIS SCRIPT REFERENCES THE MAIN  SCRIPT AGAIN.
fi
((i=i+1))
done

Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

If loop not ending

Hi, The first if loop in the script not ending and going to infinite loop. #!/usr/bin/ksh set -vx lc=1 st_date=$(date "+%Y%m%d") LOGFILE=/home/infa_shared/OM_ftp_transfer.log.$st_date file="/home/infa_shared/OM_WF.log.$st_date" while ]; do if ] then sleep 15 let lc=lc+1 print... (4 Replies)
Discussion started by: nag_sathi
4 Replies

2. UNIX for Advanced & Expert Users

Ending Spam and Etc.

This is a very general question but the idea popped into my head several years ago and wanted the opinions of all the master jedi's of this forum. I had a client that no matter what was done to control there spam(spam assassin,anti-virus(email scanning) and etc) sooner or later something would slip... (2 Replies)
Discussion started by: metallica1973
2 Replies

3. Shell Programming and Scripting

Remove ending text

Hello, I am working with a list that contains a large number of files listed by their absolute path. I am trying to determine a way to delete the file name at the end of each line, therefore leaving just the directory path. For example, I'd like to go from: /home/something/file... (2 Replies)
Discussion started by: omnivir
2 Replies

4. Shell Programming and Scripting

Nested for loop not ending

Hi All, Need help on below script for g in `cat /home/sid.txt` do for h in `cat /home/dev.txt` do symmaskdb -sid $g -dev $h list assign |grep FA |head -1|awk '{print $2}' > tt1.txt done done cat /home/sid.txt ************** 123 235 456 (5 Replies)
Discussion started by: ranjancom2000
5 Replies

5. SCO

File name ending with @

Hi Current SCO Unix 5.05 I see that there are filenames with @ at the end of file name for example in the /usr/lib there is file lpadmin@ what does the @ represent when it is at the end of the file name Thanks (4 Replies)
Discussion started by: atish0
4 Replies

6. Shell Programming and Scripting

Ending a script

Hi all, I am trying to end a Menu script. Can people suggest various methods please? At the moment I am doing: quit=n while do ...Code Code Code... read userinput case $userinput in q|Q) quit=y;; esac done But this doesn't seem to work every time, occasionally it will work,... (6 Replies)
Discussion started by: mikejreading
6 Replies

7. Programming

executables ending with *

Hi All, I m very new to unix. I have a basic doubt .. In unix I m seeing that there is a * at the end of by executable name (exe1*).. Wht is the significance of that Thanks a lot in advance (2 Replies)
Discussion started by: binums
2 Replies

8. UNIX for Dummies Questions & Answers

File- Ending

Hi folks! I'm new in this forum and in the UNIX-world too!! I've got a real problem: I have to read out datas like name and e-mail-adress from a Windows- Server from the active directory and put this information into a file. This file should be moved (or copied) on a Unix- Server... But I... (3 Replies)
Discussion started by: spikylina
3 Replies

9. UNIX for Dummies Questions & Answers

Ending Mail

hello, I a problem. I would like write script in True64 Unix.see below. last testerkl | head > mailfile.asc wolteru < mailfile.asc With the "last" command I get a list when testerkl logged on. And I would like to send this to a user. But how can I write in a "ctrl.-d" and "ctrl.-c" that... (2 Replies)
Discussion started by: Peterh
2 Replies
Login or Register to Ask a Question