accessing variable from while loop


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting accessing variable from while loop
# 1  
Old 04-20-2012
accessing variable from while loop

Hi all,

Here is an outline of the problem:



Code:
#variable declared at start of script
x=0;

#a function that increments x by 1 every 10 seconds
incrementX(){
increments x every 10 seconds;
}

#i want this to output the value of x every second. The problem is that x is always reported as 0. This is in spite of the fact that x actually is updated as is known from other functions in the script. 
globalTimer(){
while true; do
sleep 1
echo $x;
done
}

#run both functions
incrementX &
globalTimer

Moderator's Comments:
Mod Comment Welcome to the UNIX and Linux Forums. Please use code tags. Video tutorial on how to use them

Last edited by Scrutinizer; 04-20-2012 at 09:18 AM..
# 2  
Old 04-20-2012
Hi that will not work, since incrementX gets run in a sub shell, the value of x in that particular shell will remain unknown to the parent shell.
# 3  
Old 04-20-2012
You will need to change the structure of the program to have a main loop to incorporate both timers, or use a sort of inter-process communication. One way would be to send a signal to the parent shell. Another would be a named fifo. Since we are just incrementing a number, we can use the simple signaling.

Code:
#!/bin/bash

#variable declared at start of script
x=0;

#a function that increments x by 1 every 10 seconds
incrementX() {
        local ppid=$1

        while true; do
                sleep 10
                kill -USR1 "$ppid"
        done
}

globalTimer() {
        while true; do
                sleep 1
                echo $x
        done
}

#increment x on signal from async timer
trap 'let x++' SIGUSR1
#kill children when we exit
trap 'kill 0' EXIT

#run both functions
incrementX $$ &
globalTimer


Last edited by neutronscott; 04-20-2012 at 09:40 AM.. Reason: kill children
# 4  
Old 04-20-2012
Thanks buddy. I'll have a look at that over the weekend.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Accessing multiple directories in loop

Hi Guys, I need to access multiple directories whcih is following similar structure and need to copy those files in desitination path. for eg : if ] then cd ${DIR}/Mon/loaded echo "copying files to $GRS_DIR" cp * ${DIR}/Mon/ echo "Files of Monday are Copied" fi if ] then... (5 Replies)
Discussion started by: rohit_shinez
5 Replies

2. Shell Programming and Scripting

Issue with accessing value inside while loop, outside it

Hi, GetName() { if then echo " Please enter the name: " read Name tempvar=0 while read line do if then tempvar=`expr $tempvar + 1` echo $tempvar ... (10 Replies)
Discussion started by: rituparna_gupta
10 Replies

3. Shell Programming and Scripting

Significance of ':-' while accessing a variable

Hi I was trying to understand what ':-' means when used with variables echo ${x:-10} if Thanks (4 Replies)
Discussion started by: zulfi123786
4 Replies

4. Shell Programming and Scripting

Accessing local variable

Hi, Would like to know the purpose and accessing of local variable as in below code snippet: a=123 ( a=321; ) echo "a = $a" #This will print 123 How to access local a variable which is assigned with value 321 ?. .. (3 Replies)
Discussion started by: IND123
3 Replies

5. Shell Programming and Scripting

Accessing Multiple files using for loop

Hi All, I have some files in my directory, and i want to pull all data using for loop....I am using following code but getting error..! for file in {file1, file2, file3, ..... filen} do L="$(tail -1 $file)";NUM=${L%%|*};DAT=${L##*|} echo $NUM>>filedata.txt done Error: tail:... (3 Replies)
Discussion started by: fidelis
3 Replies

6. Shell Programming and Scripting

Accessing a variable from another file

HI all, How can i access a variable that is defined in another file as: $$Name= "abhinav; in my script. The catch is that it has 2 $s behind it... Thnaks ---------- Post updated at 10:36 AM ---------- Previous update was at 10:29 AM ---------- the file from which i have to... (0 Replies)
Discussion started by: abhinav192
0 Replies

7. Shell Programming and Scripting

accessing a variable or array of one script in another

hi all, i've a requirement like this. i want to access the contents of an array declared in one script,which is a bash script, to a second script which is a perl script. actually i want a sort of global variable which can be accessed in other script like environmen variables and also i can... (3 Replies)
Discussion started by: tprayush
3 Replies

8. Shell Programming and Scripting

Accessing the variable from pl sql bolck

I hve a PL SQL block in unix where i define a variable "var_px_cat" and use it for taking count SELECT COUNT(*) INTO var_px_cat FROM A WHERE B = '$CATEGORIE_ID'; Now how do I access the variable "var_px_cat" in unix after exiting from pl sql block. (3 Replies)
Discussion started by: theeights
3 Replies

9. Shell Programming and Scripting

Accessing a variable from another script

Hi, Can anyone assist me on how to access a variable in a shell script from another script. for ex, Script-1 ------- #! /bin/sh c=10 Where as, i would like to access the velue of variable c in another script 'Script-2'. Thankyou to all in advance !! :b: :b: (2 Replies)
Discussion started by: little_wonder
2 Replies

10. Shell Programming and Scripting

Accessing invidual characters in a variable name

hi, How do i access individual characters in a string variable value . say i have var=20060731. How do i retrieve 2,0,0,6 etc chars separately. Is there any Field separator in cut or awk to achieve the same? Regards, Suman (2 Replies)
Discussion started by: suman_jakkula
2 Replies
Login or Register to Ask a Question