Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 28 May 2001 09:45:05 -0500
From:      Mike Meyer <mwm@mired.org>
To:        Duke Normandin <01031149@3web.net>
Cc:        questions@freebsd.org
Subject:   Re: Need help with Bash function
Message-ID:  <15122.25713.306089.220192@guru.mired.org>
In-Reply-To: <93022994@toto.iv>

next in thread | previous in thread | raw e-mail | index | archive | help
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




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