Script help needed...

Gavin McDonald gavitron at gmail.com
Wed Jan 4 20:08:14 UTC 2006


I'm not sure how bash does it, but in perl the answer would be that your
variable is lexically scoped inside the loop.

Try declaring R at the beginning of the script.

-G

Regards,

Gavin McDonald
========================
EVI Logistic Enterprises
email: me at gavitron.com
phone: (604) 313-3845


> -----Original Message-----
> From: redhat-list-bounces at redhat.com [mailto:redhat-list-
> bounces at redhat.com] On Behalf Of Magnus Andersen
> Sent: Wednesday, January 04, 2006 12:05 PM
> To: General Red Hat Linux discussion list
> Subject: Script help needed...
> 
> Hi All,
> 
> I'm writing a script that I am going to use to test write data to an nfs
> mount.  I'm having problem with a variable.  The variable R is set inside
> a
> while loop and it is null outside the loop even after it is set.
> 
> Here is a code snippet.  I've attached the whole script if anyone would
> like
> to look at the whole thing.
> 
> if [ ! -f $PIDFILE ]; then
>     touch $PIDFILE
> else
>     # Read PIDFILE and determine if script is already running.
>     cat $PIDFILE | while read LINE
>     do
>         if [ -z "$LINE" ]; then
>             break
>         else
>             #Get PID from PIDFILE
>             OLDPID=`echo $LINE | awk '{ print $1 }'`
>             RUNNING=`ps aux | grep $OLDPID | grep -v grep | wc -l | tr -d
> '
> '`
>             if [ $RUNNING = 0 ]; then
>                 R=0
>             else
>                 (( R = $R + 1 ))
>                 echo $R
>                 LOC=`echo $LINE | awk '{ print $2 }'`
>             fi
>         fi
>     done
> fi
> echo "R = $R"
> 
> The last echo is null even after R is set inside the loop and I don't
> understand why.
> 
> Thanks,
> 
> --
> Magnus Andersen
> Systems Administrator / Oracle DBA
> Walker & Associates, Inc.




More information about the redhat-list mailing list