On Sun, Jul 18, 2010 at 11:53:02AM -0700, Linda Walsh wrote:
> 
> from man bash, to define a function use;
> 
> "function" "name" <compound-command>
>  OR
> "name" () <compound-command>
> 
> right?
> 
> And Compound Commands are:
> 
>  ( <list>)
>   { <list>; )
>  (( expression ))
>  [[ expression ]]
> ...et al....
> 
> so why do I get a syntax error for
> 
> function good_dir [[ -n $1 && -d $1 && -r $1  && -x $1 ]]
> 
> bash: syntax error near unexpected token `[['

I see this in bash(1):

    SHELL GRAMMAR
        ...
        Shell Function Definitions
            ...
            [ function ] name () compound-command [redirection]

and do not see the version you show without the parens.

    $ function good_dir() [[ -n $1 && -d $1 && -r $1  && -x $1 ]]
    $ good_dir; echo $?
    1
    $ good_dir /tmp; echo $?
    0

Ken


Reply via email to