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"