Very Basic Question regarding "while" loop


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Very Basic Question regarding "while" loop
# 1  
Old 05-21-2010
Very Basic Question regarding "while" loop

Hi,
I have a loop like this -

Code:
while read item
 do
   // fire insert query
done < itemList.txt

The itemList.txt has say, 1000 records. Now what I do is that rhough another program, I make the itemList.txt EMPTY, but still the INSERT query keeps firing the sequence of records.

Does it mean that while loop reads the entire content in-memory and later does not bother about the file ???

I do not want this behavior. Please help
# 2  
Old 05-21-2010
Hi,

"while" reads one line at a time "sequentially" until it encounters EOF.
So if another process modifies the file before the while reads/processes the entire data, the behaviour of while loop will change.

Regards,
gaurav.
# 3  
Old 05-21-2010
Quote:
Originally Posted by gaurav1086
Hi,

"while" reads one line at a time "sequentially" until it encounters EOF.
So if another process modifies the file before the while reads/processes the entire data, the behaviour of while loop will change.

Regards,
gaurav.

Hi,
Even I thought so. But I see that is not the behavior. I tried even this

Code:
cat itemList.txt | 
while read item
do
 set $item
 ## do operation with $item
done

In both the cases when my other program makes the itemList.txt as empty, the while loop continues to do the operation till the end. I am using CSHELL on Solaris 8
# 4  
Old 05-21-2010
hello,

This seems to be implementation dependant. When a process opens a file for reading/writing, the operating system loads a chunk of the file in memory for the process to read/write. So when the process has done reading with that chunk, the OS loads another chunk. This is implementation dependant.

I tried the opposite, as the while loop was executing, I added a few more entries to the end of the file(cat >> file) and while read them all. So while has a dynamic behaviour which is OS dependant.

So I can conclude that it depends on two factors - 1. size of the file 2.OS policy.
However this behaviour will cause haphazard results. Its unpredictable way to achieve things.

Regards,
gaurav.
# 5  
Old 05-21-2010
Can you try the other way and see if you empty the file, the the while loop stops immediately or does it first finishes its old execution fully and then stops ?
# 6  
Old 05-21-2010
I've created a file with 1.000.000 lines and run a while read line loop. When the loop was processing the ~150.000 line, I deleted the processed file from another terminal and the while loop did not stop, it just continued until 1.000.000th line.
HTH
This User Gave Thanks to pseudocoder For This Post:
# 7  
Old 05-21-2010
Thanks pseudocoder ! Exactly the same scenario is happening. So, how do we define this behavior ? Is it correct ?
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

2. Shell Programming and Scripting

Failure: if grep "$Var" "$line" inside while read line loop

Hi everybody, I am new at Unix/Bourne shell scripting and with my youngest experiences, I will not become very old with it :o My code: #!/bin/sh set -e set -u export IFS= optl="Optl" LOCSTORCLI="/opt/lsi/storcli/storcli" ($LOCSTORCLI /c0 /vall show | grep RAID | cut -d " "... (5 Replies)
Discussion started by: Subsonic66
5 Replies

3. UNIX for Beginners Questions & Answers

Basic question on "echo"

what happens when I echo asterisk? Please don't hijack other peoples' thread; post our own new one as required by forum rules! (5 Replies)
Discussion started by: ithenr00
5 Replies

4. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

5. Shell Programming and Scripting

Question about the difference between "for" and "while" loop

dear all, i got some questions about for/while loop when working on redirect command output to for/while loop. take one for example : in for loop : allfiles=`find /var/log -maxdepth 1 -type f -mtime +5` index=1 for ((i=0; i<${#allfiles}; i++)); do echo "$index:${allfiles}" ... (2 Replies)
Discussion started by: tiger2000
2 Replies

6. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

7. UNIX for Advanced & Expert Users

A question/problem about oracle "tns listener" and "enterprise manager"

hi, I have a problem about the Oracle related components. I'm not able to find any answer yet, and waiting for your responses... Here is the configuration of my system: * an IBM P550 machine, * an AIX 5.3 running on it and * an oracle database, already installed on it. The problem (or... (1 Reply)
Discussion started by: talipk
1 Replies

8. UNIX and Linux Applications

A question/problem about oracle "tns listener" and "enterprise manager"

hi, I have * an IBM P550 machine, * an AIX 5.3 running on it and * an oracle database, already installed on it. The problem (or question of my own) is: Oracle tns listener, "CT_LISTENER", and the enterprise manager (EM) of the instance, which is uniq instance and called... (0 Replies)
Discussion started by: talipk
0 Replies

9. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies
Login or Register to Ask a Question