On 06/10/2013 02:10 PM, dte...@freebsd.org wrote:


-----Original Message-----
From: owner-freebsd-questi...@freebsd.org [mailto:owner-freebsd-
questi...@freebsd.org] On Behalf Of Tim Daneliuk
Sent: Monday, June 10, 2013 12:06 PM
To: freebsd-questions@freebsd.org
Subject: Re: Bourne shell "if" syntax

On 06/10/2013 01:59 PM, dte...@freebsd.org wrote:


-----Original Message-----
From: owner-freebsd-questi...@freebsd.org [mailto:owner-freebsd-
questi...@freebsd.org] On Behalf Of lcon...@go2france.com
Sent: Monday, June 10, 2013 11:53 AM
To: freebsd-questions@freebsd.org
Subject: Bourne shell "if" syntax



script fragment:

PTR=`dig @some.dns +short +norec -x a.b.c.d`

echo "$PTR"

if  [  "$PTR"  ==  ""  ]  ;  then


if [ "$PTR" = "" ]; then

or

if [ -z "$PTR" ]; then

or

if [ "$PTR" ]; then

but _NOT_

if [ "$PTR" == "" ]; then



I work across a bunch of different OSs and shells of many vintages.  As I
recall,
the -z argument has problems of portability on older/broken shells and/or
is not available in all environments (I cannot recall which at the moment).
So
I achieve the same results by using a character sentinel that guarantees that
the
comparison always works:

    f  [  _"$PTR"  ==  _  ]  ;  then


Character sentinels are not required.

FreeBSD's sh(1) knows (because "[" is a built-in) that when you quote a
parameter, that it is not (even if the value begins with "-") not an operator.



That wasn't really my point.  I use sentinels because in the face of an
empty string this:

   if [ $PTR = "" ]

Actually evaluates to:

   if [ = "" ]

Which throws an error.  The character sentinel avoids this without having to
use -z, which as I said, I've had problems with not being too portable across
older machinery.


All work as expected. It matters not the value of $foo. sh(1) in FreeBSD knows
because of the double-quotes that it is not an operator.

Furthermore...

"==" is not the right operator. It's "=".

Portability would surely be compromised if you were using "==" (which doesn't
work on FreeBSD; or many other OSes I gather from experience).


Ooops, I did catch that and you're quite right.
--
-----------------------------------------------------------------------
Tim Daneliuk
_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"

Reply via email to