zsh-workers
 help / color / mirror / code / Atom feed
* Bug: [ "(" = ")" ] is true
@ 2015-12-09 15:34 Martijn Dekker
  2015-12-09 15:58 ` Stephane Chazelas
  2015-12-09 16:24 ` Peter Stephenson
  0 siblings, 2 replies; 5+ messages in thread
From: Martijn Dekker @ 2015-12-09 15:34 UTC (permalink / raw)
  To: zsh-workers

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.

Also, `[[' does not have this problem.

Credit to /u/tilkau on reddit for discovering this bug:
https://www.reddit.com/r/bash/comments/3w1hm4/how_to_compare_values_to_literal/cxsknzh

Thanks,

- Martijn


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-12-09 20:27 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-12-09 15:34 Bug: [ "(" = ")" ] is true Martijn Dekker
2015-12-09 15:58 ` Stephane Chazelas
2015-12-09 16:31   ` Martijn Dekker
2015-12-09 20:27     ` Bart Schaefer
2015-12-09 16:24 ` Peter Stephenson

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).