Thanks to all who replied:
ranks@avnasis.jccbi.gov (James T Ranks)
John Justin Hough <john@oncology.uthscsa.edu>
John Ballard <johnb@ocean.washington.edu>
Glenn Satchell <Glenn.Satchell@uniq.com.au>
vvuppa@unix.cis.state.mi.us (Vasu Vuppala (DCCI))
Mike Nibeck <nibeck@Pentagon-EMH6.army.mil>
The ORIGINAL question is at the bottom of this message. The majority
of you answered with the following:
The pipe that was used runs as a subshell.
From the sh man pages:
Because commands in pipelines are run as separate processes, variables
set in a pipeline have no effect on the parent shell.
Again, thanks to all who responded.
ORIGINAL Q:
Hello all,
I have a shell script that I am trying to run which parses through our
Oracle Database file (oratab).
Korn Shell seems to value a variable within a WHILE statement, and
re-value it AFTER the WHILE to its original value. Is this normal for
the Korn shell????
Logic...
db_there="NO"
cat $ORATAB | while read LINE && [ "$db_there" = "NO" ] do
case $LINE in
\#*) ;; #comment-line in oratab *)
ORACLE_SID=`echo $LINE | awk -F: '{print $1}' -`
# Set up environment and export for called programs if [ "$ORACLE_SID"
= "${dbn}" ]
then db_there="YES"
echo "$ORACLE_SID in oratab : db_there is $db_there."
fi
ORACLE_HOME=`echo $LINE | awk -F: '{print $2}' -`
esac
done
echo "after done, db_there is $db_there"
if [ "$db_there" = "NO" ]
then echo "${dbn}:${ORACLE_HOME}:N" >> $ORATAB
fi
-------------
I set db_there to its initial value (NO) at the top. Then db_there is
set to YES if the value is found in the oratab file. BUT, after the
script executes the "done" for the "which" statement, it seems to
re-value db_there to NO again.
Does anyone have an explanation for this???? Any suggestions would be
VERY MUCH appreciated.
Toby Potts
Policy Management Systems Corporation
This archive was generated by hypermail 2.1.2 : Fri Sep 28 2001 - 23:11:54 CDT