Script help needed...

Miner, Jonathan W (CSC) (US SSA) jonathan.w.miner at baesystems.com
Wed Jan 4 20:35:10 UTC 2006


I believe that the problem is that the `cat | while` syntax starts a sub-shell, changing the scopes of the variables.

One solution, (I think) is to take the while loop, and make it a subroutine. Then change the `cat | while` syntax to be `subroutine < file`


-----Original Message-----
From:	redhat-list-bounces at redhat.com on behalf of Magnus Andersen
Sent:	Wed 01/04/2006 03:04 PM
To:	General Red Hat Linux discussion list
Cc:	
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