While Read with in a While Read


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users While Read with in a While Read
# 1  
Old 11-12-2008
While Read with in a While Read

I am having a problem where I am doing a double read of 2 file and it kicks me out after it performs the first read of both files.

What I need it to do is continue to do the reads of both files.
Read the first file line 1, then go through the second file and read all lines, then go back to the first file read line 2, then go through the second file and read all line, and so on and so on

Here the code thanks in advance for your help

while read VDISKINFO
do

#GATHER VDISK INFORMATION
vdisk_id="$(echo $VDISKINFO | cut -d: -f1)"
vdisk_name="$(echo $VDISKINFO | cut -d: -f2)"
vdisk_iogrp="$(echo $VDISKINFO | cut -d: -f3)"
vdisk_status="$(echo $VDISKINFO | cut -d: -f5)"


# Read host name from tempfile if one exists
while read hostname
do

if [ "$(echo $hostname| cut -d: -f4)" = $vdisk_id ];
then
vdisk_host="$(echo $hostname | cut -d: -f2)"

if [ $nodeid -eq $preferred_node_id ];
then
printf "$format" $vdisk_host $vdisk_name $vdisk_id $vdisk_iogrp $preferred_node_id $vdisk_mdiskgrp_id $vdisk_uid $vdisk_status >> ${tempRPTfile}
(( numvdisks = numvdisks + 1 ))
fi

if [ $nodeid -eq "99" ]; #User select verified with vdisk
then
printf "$format" $vdisk_host $vdisk_name $vdisk_id $vdisk_iogrp $preferred_node_id $vdisk_mdiskgrp_id $vdisk_uid $vdisk_status >> ${tempRPTfile}
(( numvdisks = numvdisks + 1 ))
fi

fi
done < ${tempfile}


if [ $vdisk_host = "-------" ];
then
if [ $nodeid -eq $preferred_node_id ]
then
printf "$format" $vdisk_host $vdisk_name $vdisk_id $vdisk_iogrp $preferred_node_id $vdisk_mdiskgrp_id $vdisk_uid $vdisk_status >> ${tempRPTfile}
(( numvdisks = numvdisks + 1 ))
fi

if [ $nodeid -eq "99" ]; #User select verified with vdisk
then
printf "$format" $vdisk_host $vdisk_name $vdisk_id $vdisk_iogrp $preferred_node_id $vdisk_mdiskgrp_id $vdisk_uid $vdisk_status >> ${tempRPTfile}
(( numvdisks = numvdisks + 1 ))
fi

fi

done < ${tempVDISKfile}
# 2  
Old 11-12-2008
Hammer & Screwdriver Nesting is possible

Please modify your script to use CODE tags to maintain spacing and indenting. This makes it much easier to review.
After pasting your script to the window, highlight it all and then click the # on the icon bar above.

Now, the following shows that nesting does work:

Code:
> cat file22
1 6 4 8 2 3
2 1 9 3 2 1
3 3 5 6 3 1
4 9 7 8 2 3

> cat file22m
22m line1
22m line2
22m line3

> cat nest_22
while read mydat
  do
  echo mydat=$mydat
  while read nextdat
     do
     echo nextdat=$nextdat
  done <file22m
done <file22

> nest_22
mydat=1 6 4 8 2 3
nextdat=22m line1
nextdat=22m line2
nextdat=22m line3
mydat=2 1 9 3 2 1
nextdat=22m line1
nextdat=22m line2
nextdat=22m line3
mydat=3 3 5 6 3 1
nextdat=22m line1
nextdat=22m line2
nextdat=22m line3
mydat=4 9 7 8 2 3
nextdat=22m line1
nextdat=22m line2
nextdat=22m line3

# 3  
Old 11-12-2008
Your right, I actually had another line in there that I took out before I posted it. It was calling another program to get more information. That line was forcing it to jump out of the loop. It was a command line to get information from an IBM San Volume Controller.

This was the line omitted. Once I took the line out in the code it ran fine. Now I just have to figure out how to get this information while still in the read.

preferred_node_id="$(${svcinfo} lsvdisk -delim : $vdisk_id | grep preferred_node_id | cut -d: -f2) "
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

[Bash] Read History function & Read Arrowkeys

Hi. How can I create a history function? (By "read" command or so) & How can I configure a read command so that the arrow keys are not displayed so funny? (^[[A) Thanks in advance. (4 Replies)
Discussion started by: sinnlosername
4 Replies

2. Shell Programming and Scripting

Read from file and execute the read command

Hi, I am facing issues with the below: I have a lookup file say lookup.lkp.This lookup.lkp file contains strings delimited by comma(,). Now i want to read this command from file and execute it. So my code below is : Contents in the lookup.lkp file is : c_e,m,a,`cd $BOX | ls cef_*|tail... (7 Replies)
Discussion started by: vital_parsley
7 Replies

3. Shell Programming and Scripting

Help with Bash piped while-read and a read user input at the same time

Hi I am new to writing script and want to use a Bash Piped while-read and read from user input. if something happens on server.log then do while loop or if something happend on user input then do while loop. Pseudocode something like: tail -n 3 -f server.log | while read serverline || read... (8 Replies)
Discussion started by: MyMorris
8 Replies

4. Shell Programming and Scripting

How to read log files from last read

Hi i am looking a way to look at a log file(log.txt) from the last time I've read it. However after some days the main log file(log.txt) is rename to (log.txt.1). So now i will have two log files as below. log.txt.1 log.txt Now, i have to read the log from the point where i have left... (3 Replies)
Discussion started by: sumitsks
3 Replies

5. UNIX for Dummies Questions & Answers

When reading a csv file, counter to read 20 lines and wait for minute then read next 20 till end

Hello All, i am a newbie and need some help when reading a csv file in a bourne shell script. I want to read 10 lines, then wait for a minute and then do a reading of another 10 lines and so on in the same way. I want to do this till the end of file. Any inputs are appreciated ... (3 Replies)
Discussion started by: victor.s
3 Replies

6. 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

7. Shell Programming and Scripting

Read Embedded Newline characters with read (builtin) in KSH93

Hi Guys, Happy New Year to you all! I have a requirement to read an embedded new-line using KSH's read builtin. Here is what I am trying to do: run_sql "select guestid, address, email from guest" | while read id addr email do ## Biz logic goes here done I can take care of any... (6 Replies)
Discussion started by: a_programmer
6 Replies

8. UNIX for Advanced & Expert Users

read() wont allow me to read files larger than 2 gig (on a 64bit)

Hi the following c-code utilizing the 'read()' man 2 read method cant read in files larger that 2gig. Hi I've found a strange problem on ubuntu64bit, that limits the data you are allowed to allocate on a 64bit platform using the c function 'read()' The following program wont allow to allocate... (14 Replies)
Discussion started by: monkeyking
14 Replies

9. Programming

Cannot read a file with read(fd, buffer, buffersize) function

# include <stdio.h> # include <fcntl.h> # include <stdlib.h> # include <sys/stat.h> int main(int argc, char *argv) { int fRead, fPadded, padVal; int btRead; int BUFFSIZE = 512; char buff; if (argc != 4) { printf ("Please provide all of the... (3 Replies)
Discussion started by: naranja18she
3 Replies

10. Shell Programming and Scripting

Can I use read to read content of a variable

Can I use the read command to read the contents of a variable? I'm trying by using the following code and getting nothing back. I'm in a Linux environment. #!/bin/ksh IFS=~ VAR1=1~2~3~4 echo $VAR1 | read a b c d print "$a $b $c $d" (9 Replies)
Discussion started by: nmalencia
9 Replies
Login or Register to Ask a Question