K.S. Bhaskar via plug on 3 Feb 2022 13:50:12 -0800 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: [PLUG] Returning a status without leaving an environment variable hanging around |
K.S. Bhaskar via plug wrote on Thu, Feb 03, 2022 at 04:08:06PM -0500:
> I have a file to be sourced by a shell (typically bash, but it needs work
> with POSIX shells). If the sourcing succeeds, it sets up an environment and
> assigns values to environment variables, but if it fails, it leaves the
> environment variables unchanged (unsets all environment variables it uses).
>
> The high level structure in question is
>
> if <condition> ; then
> if <run program> ; then
> clean up a temporary directory
> else
> report error
> fi
> else
> report error
> fi
>
> I would like to enhance it to return a status which can be queried, e.g.,
> with $?. I realize that I can use an environment variable with a name that
> is guaranteed for all practical purposes to not collide with any existing
> environment variable. I was wondering if there is any way to return a
> status without using an environment variable, e.g., if there were some way
> to return $xyz and unset xyz in one fell swoop.
You need to wrap a function
foo () {
local err
if <condition> ; then
if run-program ; then
nuke
else
err=$?
return err
fi
else
return 42
fi
return 0
}
foo
--
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Martin Cracauer <cracauer@cons.org> http://www.cons.org/cracauer/
___________________________________________________________________________ Philadelphia Linux Users Group -- http://www.phillylinux.org Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce General Discussion -- http://lists.phillylinux.org/mailman/listinfo/plug