Help with while read loop


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help with while read loop
# 1  
Old 06-20-2012
Help with while read loop

Hey all,

Tried searching the forums but my search-fu may not be strong today; please feel free to redirect me if I have simply missed a post that would be helpful!

Trying to create a while loop that reads a list of configuration files, checks for a line that starts with "SOME_CMD" and ends with ".ext", and then if it does have that, echoes back the name of the configuration file.

Quote:
ls -1 *.cfg | while read cfg
do
egrep '^SOME_CMD=/usr/path/file.ext$' ${cfg} > /dev/null
echo $?
if [[ $? == 0 ]]
then
echo ${cfg}
else if [[ $? == 1 ]]
exit 0
fi
done
When I try to input this on the command line, I receive this message:
ksh: syntax error: `fi' unexpected

(We're using the old ksh on Solaris, not the 93. Not fully sure that makes a difference, but it might.)

While I'm pretty sure that I'm missing something small, I'm new enough to Unix and while loops that I can't see it myself. A coworker has looked over it and we're both unsure what I missed. I've even tried to google this with little luck.

Please, could you point out what I might have forgotten/missed?
# 2  
Old 06-20-2012
"then" is missing after second "if" condition.

also you can reduce some code by using following
Code:
grep "^SOME_CMD.*ext$" infile

Why do you want to echo the config file name on match found ?
This User Gave Thanks to 47shailesh For This Post:
# 3  
Old 06-20-2012
Oh! Hahaha. That would do it. Thanks! Smilie
# 4  
Old 06-20-2012
Or even:

Code:
ls -1d *.cfg | while read cfg
do
     grep -q '^SOME_CMD=/usr/path/file.ext$' ${cfg}
     echo $?
     if [[ $? == 0 ]]
     then
          echo "${cfg}"
     fi
done

# 5  
Old 06-20-2012
Quote:
Originally Posted by jdwyer
Code:
ls -1 *.cfg | while read cfg


There is no need for the -1 option since ls is not sending its output to the terminal. In fact, there is no need for ls at all:
Code:
for cfg in *.cfg
do
  : whatever ...
done

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

While read line loop

Based on text file: PATH:/media/hdd/Media/Video/title1 FILE:/media/cache/281662-14.jpg PATH:/media/hdd/Media/Video/title2 FILE:/media/cache/281662-15.jpg PATH:/media/hdd/Media/Video/title3 FILE:/media/cache/281662-16.jpg PATH:/media/hdd/Media/Video/title4 FILE:/media/cache/281662-17.jpg... (12 Replies)
Discussion started by: TiedCone
12 Replies

2. UNIX for Dummies Questions & Answers

Read statement within while read loop

hi, this is my script #!/bin/ksh cat temp_file.dat | while read line do read test if ]; then break else echo "ERROR" fi done when i execute this code , the script does wait for the user input . it directly prints "ERROR" and terminates after the no. of times as there... (3 Replies)
Discussion started by: siva1612
3 Replies

3. Shell Programming and Scripting

until loop and read

Hi guys what I wanna do is to create a script where can I input several times a file - assume with read function that will be inserted into a temp. file for further processing. When I press q I want that the loop will stop and continue in my script I typed this but the options q is not working... (6 Replies)
Discussion started by: kl1ngac1k
6 Replies

4. Shell Programming and Scripting

grep within while read loop

I have a key file $ cat klist 5 N:8855 CASA VERDE ROAD :32827 :ORLAND 5 N:585 MOLLY LANE :30189 :WOODST 5 N:320 NINA ROAD :32304 :TALLAH and a data file, see example of the line below: N:RT 15 & N 7TH STREET :17837 :U SAVE I need to search by key (2nd field) from klist... (6 Replies)
Discussion started by: migurus
6 Replies

5. Shell Programming and Scripting

Need help with for loop with while read

Hello, The code below pulls printer information from a three-column file (set by the ${MULTIFILE} variable at the end), that has the printer queue name, IP, and type of printer. It is supposed to use this info to add the printers in the list to one, or more servers . The input file... (3 Replies)
Discussion started by: LinuxRacr
3 Replies

6. UNIX for Dummies Questions & Answers

if elif loop with read

I am trying to setup an if, elif statement that is dependant on a variable. If the user does not enter a valid option I would like it to prompt them again and start the loop over. Here is what I have so far: echo -n "enter variable (a, b, or c): " read freq if ; then echo "a" elif ;... (2 Replies)
Discussion started by: BStanley346
2 Replies

7. Shell Programming and Scripting

read line in a for loop

Hi All, How can we use read line using the index value of a FOR loop? eg: pt_mstr,pt_status,8 pt_mstr,pt_buyer,8 pt_mstr,pt_sfty_stk,8 pt_mstr,pt_ord_pol,3 pt_mstr,pt_capacity,8 pt_mstr,pt_plan_ord,3 pt_mstr,pt_ord_mult,8 From this file i want to read the line2, 3 and 4 only using a FOR... (3 Replies)
Discussion started by: balajim
3 Replies

8. Shell Programming and Scripting

Need Help : while read loop

hi all, Can you please help me with this issue ? while ####infinite loop do cat file1 |while read var1 var2 do func1 $var1 $var2 done cat file2 | while read var11 var22 do func2 $var11 $var22 done done func1 is called till all the values are read... (2 Replies)
Discussion started by: Navatha
2 Replies

9. Shell Programming and Scripting

Please explain read in a while loop

I have a script which tries to read input from a user for every value read from a file. The input file is #> more testfile TEST1 | D200 | 12345601 | | ABC company | m TEST2 | D201 | 12345602 | | ABC company | m The script test.sh is as follows while read line do read test?"Enter a... (5 Replies)
Discussion started by: jerardfjay
5 Replies

10. UNIX for Dummies Questions & Answers

read inside a while loop

Hi all, In a while loop, like below... while read line do read choice case $choice in 1) echo "xxx" esac done < file why I can't run the read choice???? (3 Replies)
Discussion started by: dta4316
3 Replies
Login or Register to Ask a Question