Subject: Re: [ast-users] Re: [bbx-list] Re: old SCO script not working in Suse  
Linux
--------

> On another, non-ksh related, mailing list, someone wrote:
> 
> > <> is a legal operator under SCO's old version of ksh, and also under 
> > Linux's bash.
> > 
> > This runs fine under 5.0.7 and ksh:
> > 
> > aa="OK"
> > 
> > if [ "$aa" <> "XX" ]
> >   then
> >   echo "Was not XX"
> > fi
> > 
> > The echo line displays when run.
> 
> This indeed works as he describes, but the case where the two items
> being tested are equal does not.  I.e.:
> 
>     aa="OK"
> 
>     if [ "$aa" <> "OK" ]
>       then
>       echo "Was not XX"
>     fi
> 
> This still prints "Was not XX".  I don't believe <> was ever valid
> syntax, so what is really going on here.  Are the <> operators being
> interpreted as IO redirection?  Why does the shell not generate an error?

Since
        [ "$aa" <> "XX" ]
is an ordinary command, unlike [[...]], it is parsed with the normal rules.
Redirection operators can be anywhere on the line so that this is equivalent
to
        [ "$aa" ] <> "XX"
The <> opens XX for reading and writing.

This returns true if $aa is not empty and if $aa does not begin with -
and is not ! in which case it could be an error.

David Korn
[EMAIL PROTECTED]
_______________________________________________
ast-users mailing list
[email protected]
https://mailman.research.att.com/mailman/listinfo/ast-users

Reply via email to