On 06/10/2013 02:10 PM, [email protected] wrote:
-----Original Message-----
From: [email protected] [mailto:owner-freebsd-
[email protected]] On Behalf Of Tim Daneliuk
Sent: Monday, June 10, 2013 12:06 PM
To: [email protected]
Subject: Re: Bourne shell "if" syntax
On 06/10/2013 01:59 PM, [email protected] wrote:
-----Original Message-----
From: [email protected] [mailto:owner-freebsd-
[email protected]] On Behalf Of [email protected]
Sent: Monday, June 10, 2013 11:53 AM
To: [email protected]
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
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[email protected]"