foreach statement in ksh


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers foreach statement in ksh
# 1  
Old 11-19-2008
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  
Old 11-19-2008
The syntax for a for loop is:

Code:
for file in `ls -d fmr*/`; do
  #
  # do your stuff here with "$file"
  #
done

Regards
# 3  
Old 11-25-2008
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  
Old 11-25-2008
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  
Old 11-25-2008
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  
Old 11-26-2008
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  
Old 11-26-2008
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
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

If Not Diff statement in ksh 88

Hi I tried the below code where it is working properly #!/bin/ksh set -x date1_data=abc.txt date2_data=bcd.txt if diff $date1_data $date2_data >/dev/null ; then echo "Equal" else echo "Not Equal" fi Then I tried like below where i want to use only if fi not else part ... (3 Replies)
Discussion started by: smile689
3 Replies

2. Shell Programming and Scripting

Foreach statement error in cshell

Hi, while executing the following c-shell script i got the error "Couldn't find an 'end' to close a 'foreach' statement" can't find the mistake ...plz help.. script :: echo "enter build folder name in following sequence L-<REV>_<BUILD>" set BUILD = $< set file= `cat file1` foreach i... (2 Replies)
Discussion started by: arup1980
2 Replies

3. Shell Programming and Scripting

KSH If statement.

How can I search get if to pinpoint 1 word in a line and have it do something for me? example: KEY1="<< Response ... Total of 2 >> Sun Jun 19 15:30:18 2011 Tx Power Level is 27.7 Bm ~ " if ]; then command; else error; fi Thats just a quick sample. I want my if statement to se the... (5 Replies)
Discussion started by: 82280zx
5 Replies

4. Shell Programming and Scripting

If statement is not working in KSH

#! /bin/ksh rm -f ./xyz file --- this line is working // Below any if stmt is not working. if then echo " blah blah " fi or I replaced above if with if then echo "dir exists" fi This is also not working. I am new to KSH. So can someone help why if stmt is not... (31 Replies)
Discussion started by: saggy9583
31 Replies

5. Shell Programming and Scripting

KSH if statement

Hi guys, im new to UNIX so bear with me. would it be possible for me to create an if statement where i can have a key being entered and something happening after that. (bad explanation) eg. If user enters letter 'q' then close window or exit puTTy Thanks in advance (1 Reply)
Discussion started by: robbrad
1 Replies

6. Shell Programming and Scripting

ksh case statement

I am trying to write a ksh script using the case statement to select certain directories to remove. The directories that I am looking for are in the following format 2008-10-10. I want to exclude all other files/directories that contain anything other the 4 digit year,a dash, 2 digit month, a... (2 Replies)
Discussion started by: dgilc
2 Replies

7. Shell Programming and Scripting

how to use if statement in ksh script

Hi, I need to compare two variables using if condition and i am not sure if am right or wrong. My code is like : if then echo "new file" else echo "old file and remove it" fi where both variables contain time : filetime contains the time when a file... (2 Replies)
Discussion started by: manmeet
2 Replies

8. Shell Programming and Scripting

Help with if statement in ksh script

I need a way to grep for a string in a file and if it finds it, to print set a variable to "Yes", if it doesn't find the string in a file to set the variable to "No". I plan on using these variables to print a table that lists whether the string was found or not. For example print "File ... (2 Replies)
Discussion started by: stepnkev
2 Replies

9. UNIX for Dummies Questions & Answers

Let statement in ksh HELP

I have: datafile contains 1234567890 >wc -c datafile | awk '{print $1}' >11 The program #!/bin/ksh let n = (wc -c datafile | awk '{print $1}') echo $n I expect n to be 11 but it gives error message. What is wrong with this statement? Thanks! (3 Replies)
Discussion started by: bobo
3 Replies

10. UNIX for Dummies Questions & Answers

if statement in ksh

what is the problem with this comparison in ksh script: if " ] it gives syntx error (3 Replies)
Discussion started by: gfhgfnhhn
3 Replies
Login or Register to Ask a Question