The UNIX and Linux Forums  
Hello and Welcome from United States to the UNIX and Linux Forums! Thank You for Visiting and Joining Our Global Community.

Go Back   The UNIX and Linux Forums > Top Forums > UNIX for Dummies Questions & Answers
.
google unix.com



UNIX for Dummies Questions & Answers If you're not sure where to post a UNIX or Linux question, post it here. All UNIX and Linux newbies welcome !!

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
using foreach loop sam4now Shell Programming and Scripting 6 04-26-2008 11:22 AM
Foreach loop haze21 Shell Programming and Scripting 4 11-16-2007 03:11 AM
foreach folder eltinator Shell Programming and Scripting 7 08-13-2007 02:37 AM
foreach/grep help! JimWork Shell Programming and Scripting 6 07-27-2007 04:25 PM
foreach command ?! geoquest UNIX for Dummies Questions & Answers 5 05-20-2002 05:11 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Powered by Powered by Google
 
LinkBack Thread Tools Search this Thread Rate Thread Display Modes
  #1 (permalink)  
Old 11-19-2008
asulli01 asulli01 is offline
Registered User
  
 

Join Date: Nov 2008
Posts: 6
foreach statement in ksh

Hi,
My script should run through all subdirs recursively in SUBDIR_LIST, run a clearcase command in each subdir, print to the merge_results1.txt and add a new line to the results before going to the next subdir. All the results should append to merge_results1.txt, but are seperated by a line so it's easier to read.


Can someone help me with the foreach statement?


#! /usr/bin/ksh
/usr/atria/bin/cleartool startview a442592_merge_diff_2.0to2.5

cd /view/a442592_merge_diff_2.0to2.5/vobs_jil

SUBDIR_LIST=`ls -d fmr*/`


#for all the subdirs run a print merge command and add a new line to #merge_results1.txt

for each ${SUBDIR_LIST}

/usr/atria/bin/cleartool findmerge . -fver .../strutsplus-2.0_bos/LATEST -print > /home/a442592/merge_results1.txt

#loop ends here

cat /home/a442592/merge_results1.txt | sed 's/Needs Merge//g' | sed 's/"//g' |cut -d[ -f1 > /home/a442592/merge_results2.txt

cat ~/merge_results2.txt | mailx -r <form e-mail>-s 'Sync merge between 2.0 and 2.5' <to e-mail>

Thanks
  #2 (permalink)  
Old 11-19-2008
Franklin52 Franklin52 is offline Forum Staff  
Moderator
  
 

Join Date: Feb 2007
Posts: 4,293
The syntax for a for loop is:

Code:
for file in `ls -d fmr*/`; do
  #
  # do your stuff here with "$file"
  #
done
Regards
  #3 (permalink)  
Old 11-25-2008
asulli01 asulli01 is offline
Registered User
  
 

Join Date: Nov 2008
Posts: 6
Hi.
That worked - thanks.

My problem now is that everytime it goes through the loop it adds a line, which is ok if there is output. My problem is that i am now getting 3 to 4 blank lines so i now need to put an if statement to say if a blank line already exists don't add another.

Do you know how to do that?

CODE:
SUBDIR_LIST=`ls -d fmr*`
for DIR in `ls -d fmr*`; do
/usr/atria/bin/cleartool findmerge $DIR -fver .../strutsplus-2.0_bos/LATEST -print >> /home/a442592/merge_results1.txt
echo >> /home/a442592/merge_results1.txt "\n"
done
cat /home/a442592/merge_results1.txt | sed 's/Needs Merge//g' | sed 's/"//g' |cut -d[ -f1 > /home/a442592/merge_results2.txt


Thanks
Angela
  #4 (permalink)  
Old 11-25-2008
Franklin52 Franklin52 is offline Forum Staff  
Moderator
  
 

Join Date: Feb 2007
Posts: 4,293
What does this command means?

Code:
echo >> /home/a442592/merge_results1.txt "\n"
Do you have the desired output if you remove this command?
If not, post the contents of merge_results1.txt and the desired output.

Regards
  #5 (permalink)  
Old 11-25-2008
asulli01 asulli01 is offline
Registered User
  
 

Join Date: Nov 2008
Posts: 6
The loops keeps appending to the same file so the echo command adds a line between each loop. if i remove it i get no line seperators.

This is what i am getting now (using 'echo...'):

___________________________________________

fmr-aspects/docs/pub/AspectJ-Policy-Enforcement-User-Guide.doc
fmr-aspects/jil-usage-policies-test/src/com/fmr/commons/aspectj/policy/FMRCommonsSSMCTest.java
fmr-aspects/jil-usage-policies-test/src/com/fmr/commons/aspectj/policy/TestAll.java


fmr-commons-admin/docs/pub/fmr-admin.doc
fmr-commons-admin/src/java/com/fmr/commons/admin/services/jca/JcaFactorySpec.java


fmr-commons-catalog/docs/pub








fmr-commons-cs203/build.properties
fmr-commons-cs203/old_build.xml
fmr-commons-cs203/src/main/java/com/fmr/commons/cs203/utils/CS203Constants.java
fmr-commons-cs203/src/test/java/com/fmr/commons/cs203/validator/CoreValidatorTest.java


fmr-commons-hacp/docs/TSD-FMR-COMMONS-HACP.doc
fmr-commons-hacp/scripts/hacp-build.xml
fmr-commons-hacp/src/test/config/log4j.xml

__________________________________________

The spaces between should only be one line, but my code adds a line regardless of any output of the loop. So i want to say that if a blank line already exists dont add another.

What it should look like is:

___________________________
fmr-aspects/docs/pub/AspectJ-Policy-Enforcement-User-Guide.doc
fmr-aspects/jil-usage-policies-test/src/com/fmr/commons/aspectj/policy/FMRCommonsSSMCTest.java
fmr-aspects/jil-usage-policies-test/src/com/fmr/commons/aspectj/policy/TestAll.java

fmr-commons-admin/docs/pub/fmr-admin.doc
fmr-commons-admin/src/java/com/fmr/commons/admin/services/jca/JcaFactorySpec.java

fmr-commons-catalog/docs/pub

fmr-commons-cs203/build.properties
fmr-commons-cs203/old_build.xml
fmr-commons-cs203/src/main/java/com/fmr/commons/cs203/utils/CS203Constants.java
fmr-commons-cs203/src/test/java/com/fmr/commons/cs203/validator/CoreValidatorTest.java

fmr-commons-hacp/docs/TSD-FMR-COMMONS-HACP.doc
fmr-commons-hacp/scripts/hacp-build.xml
fmr-commons-hacp/src/test/config/log4j.xml

__________________________

Thanks
Angela
  #6 (permalink)  
Old 11-26-2008
Franklin52 Franklin52 is offline Forum Staff  
Moderator
  
 

Join Date: Feb 2007
Posts: 4,293
It's difficult if you don't know when your command produces an empty line.
You can delete all the emptylines from your output with:

Code:
sed '/^$/d' file > newfile
Regards
  #7 (permalink)  
Old 11-26-2008
asulli01 asulli01 is offline
Registered User
  
 

Join Date: Nov 2008
Posts: 6
Hi,
Thats not really what i need cause i still need 1 blank line.

I found this - it removes duplicate, consecutive lines
awk 'a !~ $0; {a=$0}'


would you know how to change it to remove only 1 of the duplicate lines?

thanks
Sponsored Links
Closed Thread

Bookmarks

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On




All times are GMT -4. The time now is 06:44 AM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
The UNIX and Linux Forums Content Copyright ©1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant URLs by vBSEO 3.2.0