Walt Mankowski on 13 Oct 2009 16:21:57 -0700

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: [PLUG] Distinguishing between environment variable with null value and one that is not set

On Tue, Oct 13, 2009 at 03:52:24PM -0400, K.S. Bhaskar wrote:
> It appears that POSIX shell (and bash) have no built-in way to
> distinguish between the case where an environment variable exists with
> a null value and the case where it simply does not exist.  The
> simplest way I have been able to come up with is to grep the output of
> env and test for zero length, e.g.:
> $ if [ -z "`env | grep foo`" ] ; then echo It doesn\'t exist\! ; fi
> It doesn't exist!
> $ if [ -z "`env | grep PWD`" ] ; then echo It doesn\'t exist\! ; fi
> $
> Is there a better way?  Thanks in advance.

Well, I don't know if it's *better*, but if you've got perl installed
on the box you could always say

  perl -e 'exit defined $ENV{foo}'

which will set $? to either 1 or 0.

But to be honest, instead of trying to come up with a solution to this
problem, I'd probably concentrate on avoiding putting nulls in my
environment variables in the first place.


Attachment: signature.asc
Description: Digital signature

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