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