Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Bug: [ "(" = ")" ] is true



2015-12-09 16:34:34 +0100, Martijn Dekker:
> There is a string comparison bug with `[' and `test'; the result is true
> if the first string starts with '(' and the second string starts with ')'.
> 
> $ [ "(" = ")" ] && echo oops || echo ok
> oops
> $ [ ")" = "(" ] && echo oops || echo ok
> ok
> $ [ "((" = "))" ] && echo oops || echo ok
> oops
> $ [ "((" = ")x" ] && echo oops || echo ok
> oops
> $ [ "(x" = ")" ] && echo oops || echo ok
> oops
> $ [ "x(" = ")" ] && echo oops || echo ok
> ok
> $ [ "(" = "x)" ] && echo oops || echo ok
> ok
> 
> This appears to be a long-standing bug. I confirmed it in:
> 
> zsh 4.3.6
> zsh 5.1.1
> zsh 5.2
> 
> I also found that the bug does *not* exist in zsh 4.1.1.
[...]

http://www.zsh.org/mla/users/2007/msg01223.html seems to be to
blame.

If the first argument starts with a "(" and the last one starts in
a ")", they are both removed.

So all operators are affected not just "=" ([ "(file1)" -nt
")file2(" ]...)

-- 
Stephane



Messages sorted by: Reverse Date, Date, Thread, Author