bash null conditional

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


On Mon, 2009-03-30 at 13:33 -0500, Justin Willmert 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?
> >
> > Craig
> >
> Have you tried
>     $ if [ -n $(grep A121 myfile.csv) ]; then echo "null"; fi
>     $ if [ -n $(grep A125 myfile.csv) ]; then echo "null"; fi
> 
> The double quotes make a string, but it looks like you which to be 
> executing grep which is accomplished by using the $() notation.  You 
> could also use a pair of backticks surrounding the command.
----
I started with backticks...

$ if [ -n `grep A125 ARdebtorsmaster.csv` ]; then echo "null"; fi
null
$ if [ -n `grep A121 ARdebtorsmaster.csv` ]; then echo "null"; fi
bash: [: too many arguments

which interestingly is also the same problem that I get with your first
suggestion...

$ if [ -n $(grep A125 ARdebtorsmaster.csv) ]; then echo "null"; fi
null
$ if [ -n $(grep A121 ARdebtorsmaster.csv) ]; then echo "null"; fi
bash: [: too many arguments

and then of course, light bulb goes off...I have to figure out how to
get a basic exit code from grep, but seemingly the -s and the -q aren't
the answer.

Craig




More information about the fedora-list mailing list