我想确保一个变量不包含特定的字符(在这种情况下是'α'),但以下代码失败了(返回1):
FOO="test" && [[ $FOO =~ '^[^α]*$' ]]
编辑:根据下方stema的反馈更改了模式,只要求从开头到结尾匹配“非'α'”字符。
将'α'替换为例如'x'可以正常工作。为什么使用'α'时会失败,如何使其正常工作?
系统信息:
$ zsh --version
zsh 4.3.11 (i386-apple-darwin11.0)
$ locale
LANG="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_CTYPE="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_ALL="en_GB.UTF-8"
编辑2:我现在在一台运行Ubuntu 11.10的Linux机器上进行了测试,使用相同的区域设置运行zsh 4.3.11,并且它可以正常工作 - 即FOO="test" && [[ $FOO =~ '^[^α]*$' ]]
返回成功。 我正在运行Mac OS X 10.7.2。
FOO="test" && [[ $FOO =~ '^[^α]*$' ]]
。但那仍然失败了。将'α'更改为'x'就成功了,因此在这里使用'α'字符时必须有些东西不能正常工作。 - beta