help me in file reading


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting help me in file reading
# 1  
Old 11-27-2007
help me in file reading

hi ,

could any one tell me why i m not getting the value of variable i outside the
while loop in file reading

cat filename | while read line
do
i=2
done

echo $i

here it is not showing the value of i . what i have to do if i want to persist the value of
i outside the while loop



thanks
# 2  
Old 11-27-2007
It currently doesn't show the value of `i` because it never reaches it.
filename has to contain something for the loop to be entered at least once.

Otherwise it works fine.

Cheers,
Cameron
# 3  
Old 11-27-2007
no filename contains some names like

ram
ravi



so it will go 2 times in the loop . even though it is not working
# 4  
Old 11-27-2007
Quote:
Originally Posted by useless79
hi ,

could any one tell me why i m not getting the value of variable i outside the
while loop in file reading

cat filename | while read line
do
i=2
done

echo $i

here it is not showing the value of i . what i have to do if i want to persist the value of
i outside the while loop
thanks
In this case, the pipe spawns a sub-shell and assigns i=2. When it comes out of the subshell, it does retain the value of i. Think scoping and you will understand.

Do this and you will get what you are looking for

Code:
while read line
do
  i=2
done < filename
echo $i


Last edited by vino; 11-27-2007 at 05:34 AM.. Reason: minor correction.
# 5  
Old 11-27-2007
My reasoning:
Code:
[mddev:/home/cameron]
$ cat detail2.sh
#!/bin/ksh

cat /home/cameron/dummyfile.txt | while read inline
do
  i=2
done

echo $i


[mddev:/home/cameron]
$ detail2.sh
2

[mddev:/home/cameron]
$

Nice pickup Vino - not seen that before (not that I can recall).
What system/application settings cause this type of result?

Cheers,
Cameron
# 6  
Old 11-27-2007
Quote:
Originally Posted by Cameron
What system/application settings cause this type of result?
It's the pipe that puts the "while/read/do/done" in a child process.

If you did

while read N; do xxxx ; done <FILE

it would not go in a child process.
# 7  
Old 11-27-2007
Hi porter,
I understand that the child process being spawned.
But why is it that when I run it, `i` is resolved; and when useless79 ran the same `i` didn't resolve ??

Is it a shell attribute ??

Sorry for the continued questions - just very curious to understand. Smilie

Cheers,
Cameron
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

ksh Script, Reading A File, Grepping A File Contents In Another File

So I'm stumped. First... APOLOGIES... my work is offline in an office that has zero internet connectivity, as required by our client. If need be, I could print out my script attempts and retype them here. But on the off chance... here goes. I have a text file (file_source) of terms, each line... (3 Replies)
Discussion started by: Brusimm
3 Replies

2. UNIX for Dummies Questions & Answers

Reading Xml file and print the values into the text file in columnwise?

hi guys, i want help... Reding XML file and print the values into the text file using linux shell script file as per below xml file <sequence> <Filename>aldorzum.doc</Filename> <DivisionCode>US</DivisionCode> <ContentType>Template</ContentType> <ProductCode>VIMZIM</ProductCode> </sequence>... (4 Replies)
Discussion started by: sravanreddy
4 Replies

3. UNIX for Dummies Questions & Answers

Reading XML file and print the values in the text file using Linux shell script

hi guys, i want help... Reding XML file and print the values into the text file using linux shell script file as per below xml file <sequence> <Filename>aldorzum.doc</Filename> <DivisionCode>US</DivisionCode> <ContentType>Template</ContentType> <ProductCode>VIMZIM</ProductCode> </sequence>... (1 Reply)
Discussion started by: sravanreddy
1 Replies

4. Shell Programming and Scripting

Reading UNIX commands from file and redirecting output to a file

Hi All I have written the following script: #!/bin/ksh while read cmdline do echo `$cmdline` pid="$cmdline" done<commands.txt =========== commands.txt contains: ps -ef | grep abc | grep xyz |awk '{print $2}; My objective is to store the o/p of the command in a variable and do... (8 Replies)
Discussion started by: rahulparo
8 Replies

5. Shell Programming and Scripting

fatal: cannot open file `TNAME' for reading (No such file or directory)

Hi, I am running this command through a shell script and getting the error mentioned in the subject line: testing.awk -f x.txt TNAME My testing.awk file contains something like ++++++++++++++++++ #!/usr/bin/awk -f BEGIN{ TAB_NAME="INSERT_ONE_" ARGV ; } if ( $1=="JAM_ONE" &&... (1 Reply)
Discussion started by: kunwar
1 Replies

6. Shell Programming and Scripting

Searching for Log / Bad file and Reading and writing to a flat file

Need to develop a unix shell script for the below requirement and I need your assistance: 1) search for file.log and file.bad file in a directory and read them 2) pull out "Load_Start_Time", "Data_File_Name", "Error_Type" from log file 4) concatinate each row from bad file as... (3 Replies)
Discussion started by: mlpathir
3 Replies

7. UNIX for Dummies Questions & Answers

Reading from a file(passing the file as input parameter)

hi I have a shell script say primary.sh . There is a file called params my scenario is primary.sh should read all the values and echo it for example i should pass like $primary.sh params output would be Abc ... (2 Replies)
Discussion started by: ssuresh1999
2 Replies

8. UNIX for Advanced & Expert Users

Reading a file and sending mail based on content of the file

Hi Gurus, I am having an requirement. i have to read a list file which contains file names and send mail to different users based on the files in the list file. eg. if file a.txt exists then send a mail to a@a.com simillary for b.txt,c.txt etc. Thanks for your help, Nimu (6 Replies)
Discussion started by: nimu1979
6 Replies

9. Shell Programming and Scripting

Reading file names from a file and executing the relative file from shell script

Hi How can i dynamically read files names from a list file and execute them from a single shell script. Please help its urgent Thanks in Advance (4 Replies)
Discussion started by: anushilrai
4 Replies
Login or Register to Ask a Question