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@xxxxxxxxxx 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.
-- redhat-list mailing list unsubscribe mailto:redhat-list-request@xxxxxxxxxx?subject=unsubscribe https://www.redhat.com/mailman/listinfo/redhat-list