Script Help
Rick Stevens
rstevens at vitalstream.com
Thu Nov 9 01:08:28 UTC 2006
On Wed, 2006-11-08 at 17:28 -0600, inode0 wrote:
> On 11/8/06, Rick Stevens <rstevens at vitalstream.com> wrote:
> > The standard way of forcing an environment variable into a script
> > (without doing an "export VARNAME") is to put it on the command line
> > that invokes the script:
> >
> > $ VARNAME="data" path-to-script.sh
> >
> > Then in the script:
> >
> > ...
> > if [ x$(VARNAME) = "xdata"]; then
> > do something
> > fi
> >
> > If you want the shell to export some variable, then use
> >
> > declare -x SVARNAME
> >
> > _IN_ the script to export it. For example, if "fred.sh" contained:
> >
> > #! fred.sh - Show use of variables
> > if [ x$(INVAR) = "xdata" ]; then
> > export -x OUTVAR
>
> export -x? declare -x? typeset -x?
>
> > OUTVAR="INVAR was set"
> > exit 0
> > else
> > exit 1
> > fi
> >
> > and you ran:
> >
> > # INVAR="data" ./fred.sh
> >
> > Then fred.sh would set a return code of 0 and the environment variable
> > "OUTVAR" would contain the string "INVAR was set". If you ran:
> >
> > # ./fred.sh
> >
> > it would return 1 and "OUTVAR" would not be defined.
>
> It appears you are suggesting setting a variable in the environment of
> the parent process via exporting it in the child process. My brain is
> hurting this evening but I think the exported variable in the script
> would only be exported to the environment of any child processes it
> creates?!
Ah, you're right. However, if the variable exists BEFORE the script is
called, the script can modify its contents and it'll persist.
----------------------------------------------------------------------
- Rick Stevens, Senior Systems Engineer rstevens at vitalstream.com -
- VitalStream, Inc. http://www.vitalstream.com -
- -
- We look for things. Things that make us go! -
----------------------------------------------------------------------
More information about the Redhat-install-list
mailing list