Variables scope.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Variables scope.
# 1  
Old 05-22-2008
Variables scope.

Hi ,
I'm trying to change the variable value in a while loop , however its not working it seems that the problem with subshells while reading the file.

#!/bin/sh
FLAG=0;
cat filename | while read data
do
FLAG=1;
done

echo $FLAG

Should display 1 instead displays 0
# 2  
Old 05-22-2008
Quote:
Originally Posted by dinjo_jo
Hi ,
I'm trying to change the variable value in a while loop , however its not working it seems that the problem with subshells while reading the file.

#!/bin/sh
FLAG=0;
cat filename | while read data
do
FLAG=1;
done

echo $FLAG

Should display 1 instead displays 0
It will only display the value of FLAG as 1 when the condition is satisfied,that means there is some file you are trying to cat and reading lines. So check for the file first.

Thanks..
# 3  
Old 05-22-2008
The file exists , but since there is a while loop each reads a file , it creates a subshell , so the value is lost as soon as while loop ends.
# 4  
Old 05-22-2008
#!/bin/sh
FLAG=0;
while read data
do
FLAG=1;
done < filenname

echo $FLAG

try this u will get flag value 1
# 5  
Old 05-23-2008
Unfortunately that only works in bash shell.
# 6  
Old 05-23-2008
Bug checking for file existence first

Hi,

First yo chech for the file existence and then

FLAG=0;
while read file
do
FLAG =1;
done < input_file
echo "$FLAG"

I think this should work...
# 7  
Old 05-23-2008
There no single explanation and the main problem is not whether the file exists. It is what shell is being used. Consider this:

Code:
$ cat fcheck
#!/bin/sh

FLAG=0;
cat filename | while read data
do
echo "data=$data"
FLAG=1;
done

echo $FLAG

Bash
Code:
$ bash fcheck
data=line1
data=line2
0

Bourne:
Code:
$ sh fcheck
data=line1
data=line2
0

Korn:
Code:
$ ksh fcheck
data=line1
data=line2
1

So for sh, the behavior is as expected.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Scope of variables between scripts

Friends, I am using ksh under SunoS. This is what I have In file1.sh NOW=$(date +"%b-%d-%y") LOGFILE="./log-$NOW.log" I will be using this file through file1.sh as log file. I have another script file2.sh which is being called inside my file1.sh. I would like to use the same log... (6 Replies)
Discussion started by: dahlia84
6 Replies

2. Shell Programming and Scripting

variable scope

Hi, I want to know about the variable scope in shell script. How can we use the script argument inside the function? fn () { echo $1 ## I want this argument should be the main script argument and not the funtion argument. } also are there any local,global types in shell script? if... (3 Replies)
Discussion started by: shellwell
3 Replies

3. Shell Programming and Scripting

while read loop; scope of variables (shell)

If I set a variable within a while-read loop, sometimes it's local to the loop, sometimes it's global, depending on how the loop is set up. I'm testing this on a Debian Lenny system using both bash and dash with the same results. For example: # Pipe command into while-read loop count= ls -1... (2 Replies)
Discussion started by: mjd_tech
2 Replies

4. Shell Programming and Scripting

Doubt about variables scope

I call my script with two parameters myscript.sh aaa bbb What is the way to access $1 and $2 values inside a function? I call the function like this myfuntion $1 $1 but inside of the function, $1 and $2 are empty. Any suggestions? thank you in advanced. (1 Reply)
Discussion started by: aristegui
1 Replies

5. AIX

Scope of AIX

What is the scope of AIX as I am starting my career as a fresher in AIX administration?? (4 Replies)
Discussion started by: abhishek27
4 Replies

6. Shell Programming and Scripting

Doubt??? [scope of variables]

Heres an example..... <~/abc>$ cat textfile line 1 line 2 line 3 line 4 line 5 <~/abc>$ cat try.sh #/bin/ksh for runs in 1 2 3 do A=$runs echo "Inside A : $A" done echo "Outside A : $A" <- works fine (1 Reply)
Discussion started by: qzv2jm
1 Replies

7. Shell Programming and Scripting

Access Awk Variables Outside Scope

My awk script searches for specified patterns in a text file and stores these values into mem variables. Once this is done I want to Insert these values into a table. How can I avail of the variable values outside the scope of awk script.... One method that I have tried is to write the... (7 Replies)
Discussion started by: Amruta Pitkar
7 Replies

8. UNIX for Advanced & Expert Users

Access Awk Variables Outside Scope

Sorry in the wrong forum. Moving this to right forum. (2 Replies)
Discussion started by: Amruta Pitkar
2 Replies

9. Programming

scope

Each thread has a copy of auto variables within a function, but variables declared as static within a function are common to all threads. To circumvent this can static variables be placed outside the function. If so, will the scope of the variable be file only or will it be extern, and will each... (7 Replies)
Discussion started by: sundaresh
7 Replies

10. Programming

C++: scope, different files etc..

I'm having a problem getting this to work.. I got 3 files, start.C - Where i got my main() function Menu.C & Menu.h - Where I'm trying to use hash_map start.C #include <iostream> #include "Menu.h" using namespace std; int main() { /* test code here */ return 0; } Menu.h ... (1 Reply)
Discussion started by: J.P
1 Replies
Login or Register to Ask a Question