Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 28 May 2001 11:38:26 -0500
From:      Mike Meyer <mwm@mired.org>
To:        Jim Conner <jconner@enterit.com>
Cc:        Duke Normandin <01031149@3web.net>, questions@freebsd.org
Subject:   Re: Need help with Bash function
Message-ID:  <15122.32514.853271.557888@guru.mired.org>
In-Reply-To: <5.1.0.14.0.20010528112740.0239cd68@mail.enterit.com>
References:  <93022994@toto.iv> <5.1.0.14.0.20010528112740.0239cd68@mail.enterit.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Jim Conner <jconner@enterit.com> types:
> The only thing you are lacking is quotes in your condition...
> 
>   function ezq() {
>       if [ -a "~/tmp/*" ]
>       then
>           echo -e "there's something here....\n"
>       else
>           echo -e "empty....\n"
>     fi
>   }
> 
> Now, I ususally use ksh but bash should be able to do the same thing.

That doesn't work in bash here. I suspect that the version of test
built into ksh and bash are different. Just out of curiosity, did you
test it with more than one file in ~/tmp?

I'm also amused to note that bash apparently uses /bin/[ when this is
run as a script, but the builtin test when it's run as a function, as
I get different failures in those two cases.

	<mike

> At 09:45 AM 5/28/2001 -0500, Mike Meyer wrote:
> >Duke Normandin <01031149@3web.net> types:
> > > I'm trying to debug the following function w/o much success.
> > >
> > > function ezq() {
> > > if [ -a ~/tmp/* ]; then
> > >     echo -e "there's something here....\n"
> > > else
> > >     echo -e "empty....\n"
> > > fi
> > > }
> > > I keep on getting:
> > >
> > > '[: binary operator expected'
> > >
> > > Is it whinning about the '-a' above? Why?
> >
> >Because -a is a binary operator. It's format is "expresion1 -a expression2",
> >though the message you're getting is strange. I get a different one.
> >
> > > All I want to do is to check to see if a directory is empty or not.
> > > TIA...
> >
> >That's a bit trickier; test - aka '[' - doesn't have any primitives
> >for looking at directories, or arrays of any kind. So you need to
> >generate a list of files in a string - which test can look at - and
> >then check to see if the string is empty or not. The following works
> >for me:
> >
> >function ezq() {
> >     if [ -n "`ls ~/tmp`" ];    then
> >         echo "there's something here...."
> >     else
> >         echo empty...
> >     fi
> >}
> >
> >         <mike
> >--
> >Mike Meyer <mwm@mired.org>                      http://www.mired.org/home/mwm/
> >Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information.
> >
> >To Unsubscribe: send mail to majordomo@FreeBSD.org
> >with "unsubscribe freebsd-questions" in the body of the message
> 
> 
> - Jim
> - NOTJames
> - jconner@enterit.com
> 
> - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> - | Today's errors, in contrast:                                           |
> - | Windows - "Invalid page fault in module kernel32.dll at 0032:A16F2935" |
> - | UNIX    - "segmentation fault - core dumped"                           |
> - | Humans  - "OOPS, I've fallen and I can't get up"                       |
> - --------------------------------------------------------------------------
> - (To view this properly use a non-proportional font in your MUA)
> 
> 
--
Mike Meyer <mwm@mired.org>			http://www.mired.org/home/mwm/
Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information.

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?15122.32514.853271.557888>