zsh 中 OR 运算符的奇怪问题

zsh 中 OR 运算符的奇怪问题

我发现 CentOS 6.4、zsh 4.3.10(x86_64-redhat-linux-gnu)存在一个奇怪的问题。

这是在同一个字符串上运行两个正则表达式。两个表达式都没有通过 if 条件,但是当我将它们或在一起时

$ if [[ "foo" =~ "^\s*$" ]]; then; echo "Test"; fi
$ if [[ "foo" =~ "^\.+$" ]]; then; echo "Test"; fi
$ if [[ "foo" =~ "^\.+$" || "foo" =~ "^\s*$" ]]; then; echo "OR test"; fi
OR test

据我所知,这种情况只发生在 CentOS 上,使用 zsh 5.0.2 (x86_64-apple-darwin13.0) 和 zsh 5.0.2 (x86_64-pc-linux-gnu) 时我得到了预期的行为

答案1

如果需要,最后的 if 应该略有不同。尝试:

if [[ "foo" =~ "^\.+$" ]] || [[ "foo" =~ "^\s*$" ]]; then; echo "OR test"; fi

相关内容