bash null conditional

Craig White craigwhite at azapple.com
Mon Mar 30 18:55:41 UTC 2009


On Mon, 2009-03-30 at 13:42 -0500, Robert Nichols wrote:
> Craig White wrote:
> > I'm in my bash book and looking on web but can't seem to resolve this
> > simple problem.
> > 
> > $ if [ -n "grep A121 myfile.csv" ]; then echo "null"; fi
> > null
> > 
> > $ if [ -n "grep A125 myfile.csv" ]; then echo "null"; fi
> > null
> > 
> > A125 definitely is null when I just run the grep command in the quotes
> > but A121 definitely is not null.
> > 
> > What am I missing on the if/null operator here?
> 
> As written, you are asking if the literal string "grep A121 myfile.csv"
> is non-null, which obviously is true and has nothing whatsoever to do
> with the 'grep' command, which is never invoked.
> 
> $ if [ -n "`grep A121 myfile.csv`" ]; then echo "null"; fi
> 
> This will actually invoke 'grep' and insert its output into the string
> to be tested.
----
yeah...I actually started with backticks and was trying various things.

This seems to work...

$ if [ `grep -c A121 myfile.csv` -eq 0 ]; then echo "null"; fi
$ if [ `grep -c A125 myfile.csv` -eq 0 ]; then echo "null"; fi
null
$

but if someone clarifies the -n (null) result, I would be grateful.

Thanks

Craig




More information about the users mailing list