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>
