From owner-freebsd-questions Mon May 28 9:38:57 2001 Delivered-To: freebsd-questions@freebsd.org Received: from guru.mired.org (okc-65-26-235-186.mmcable.com [65.26.235.186]) by hub.freebsd.org (Postfix) with SMTP id F269437B50D for ; Mon, 28 May 2001 09:38:27 -0700 (PDT) (envelope-from mwm@mired.org) Received: (qmail 83746 invoked by uid 100); 28 May 2001 16:38:26 -0000 From: Mike Meyer MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <15122.32514.853271.557888@guru.mired.org> Date: Mon, 28 May 2001 11:38:26 -0500 To: Jim Conner Cc: Duke Normandin <01031149@3web.net>, questions@freebsd.org Subject: Re: Need help with Bash function 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> X-Mailer: VM 6.90 under 21.1 (patch 14) "Cuyahoga Valley" XEmacs Lucid X-face: "5Mnwy%?j>IIV\)A=):rjWL~NB2aH[}Yq8Z=u~vJ`"(,&SiLvbbz2W`;h9L,Yg`+vb1>RG% *h+%X^n0EZd>TM8_IB;a8F?(Fb"lw'IgCoyM.[Lg#r\ Sender: owner-freebsd-questions@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG Jim Conner 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. 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 Meyer 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 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