[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: syntax error with lone > or < as string in [ ] tests with -a or -o o
From: |
Emanuel Attila Czirai |
Subject: |
Re: syntax error with lone > or < as string in [ ] tests with -a or -o operators |
Date: |
Mon, 15 Apr 2024 19:04:23 +0200 |
On Mon, Apr 15, 2024, 15:08 Chet Ramey <chet.ramey@case.edu> wrote:
> On 4/14/24 5:16 AM, Emanuel Attila Czirai wrote:
>
> > Bash Version: 5.2
> > Patch Level: 26
> > Release Status: release
> >
> > Description:
> > the [ test with -n or -z on a string that's only the angle bracket
> char
> > followed by -a or -o operators, fails like:
> > bash: [: syntax error: `-n' unexpected
> >
> > Repeat-By:
> >
> > $ [ -n ">" -a -n "something" ] || echo hmm
> > bash: [: syntax error: `-n' unexpected
> > hmm
>
> I think the part your analysis is missing is that `<' and `>' are binary
> operators, so this really is an ambiguous expression.
>
In my superficial report, I definitely didn't think of that. I even forgot
to mention that it works when escaped like "\>"
I've encountered it in the "adduser" FreeBSD sh script that runs as root,
while trying to set a one char password like ">", so I thought I'd mention
it here as well in case it might be helpful since I saw it happens in bash
as well.
Thanks, everyone. Have a great day&all!
>
>
> POSIX test specifies what happens when there are four or fewer arguments
> (and the upcoming issue 8 will remove -a/-o/(/) altogether); when you
> have more than four you're dealing with historical algorithms. Historical
> parsing gave the string comparison binary operators higher precedence than
> the unary operators.
>
> --
> ``The lyf so short, the craft so long to lerne.'' - Chaucer
> ``Ars longa, vita brevis'' - Hippocrates
> Chet Ramey, UTech, CWRU chet@case.edu http://tiswww.cwru.edu/~chet/
>
>