UGU Unix Guru Universe
For Unix Admins, By Unix Admins
Follow ugucom on Twitter      Search  in 
Home
BEGINNERS & USERS

Events

Internet
 
 Linux
BEGINNERS & USERS
Software
Linux Vendors
Usenet NewsGroups
Books & Publications
 
 Shop
Cool Admin Gifts!
Gadgets
T-Shirts
Books
 
 Unix Guru Universe
About
Add Link
Feedback
 
 
UGU: Unix Guru Universe - Unix Tip #4005- January 29, 2012 - Home : Help : Today's Tip
Unix Tip #4005- January 29, 2012

TEST TROUBLES IF STRING IS EMPTY


(1) bad ex.
if [ `echo "$OPTARG" | sed '/^[0-9][0-9]*$/!d` = "" ]

(2) fixed ex.
if [ `echo "$OPTARG" | sed '/^[0-9][0-9]*$/ s//X/'`= "X" ]

(3) another fixed ex. (Bourne Shell, ksh)
if [ -n "`echo "$OPTARG" | sed '/^[0-9][0-9]*$/!d'`" ]

(1) This produces an easy
to overlook error. On
success and the lack of
double quotes on the left
side cause test to think
there is no parameter,
producing an error (1).
This is because the result
is an empty string without
quotes and test doesn't
know that it is dealing
with a string, no parameter
seen.

Adding a character to the
beginning of each string is
a trick to fix it (2). The
test command sees a string
and simply compares as normal,
passing over the pair of
initial and equal characters.

Another fix (3) is to surround
the empty/not empty string with
double quotes. Test will see
the empty string and things
work as normal. This (3) works
in Bourne Shell and ksh but NOT
in csh.

Simple ex.
$ foo=""
$ test -n $foo # fails
$ test -n `echo $foo` # fails
$ test -z `echo x$foo` # works, might throw off the logic
$ test -n "`echo $foo`" # works in sh & ksh


This tip generously supported by: bigoldbulldog@hotmail.com

NOTE: All tips provided are USE AT YOUR OWN RISK. Tips are submitted by various unix admins around the globe. UGU suggest you read and test each tip in a non-volitile environment before placing into production.


LAST 5 TIPS
4004 - ANOTHER PROCESS FINDER
4003 - VI REVERSAL
4002 - BANNERS ON TELNET
4001 - MOUNTING CD'S ON HPUX
4000 - OUT PARAMETER FROM ORACLE


I want to SUBSCRIBE and get a UGU Tip everyday.
I want to UNSUBSCRIBE and NOT get a UGU Tip everyday.

If you have a UNIX TIP let us know, we just may use it:
(All tips become the property of the Unix Guru Universe)
Email Address:

Yes, email me a Hot Unix Tip everday.

Enter Hot Unix Tip (optional):

Yes, I will support this tip

Captcha (not case sensitive):


Please enter the above letters:

 
Copyright 1994-2024 Unix Guru Universe