【发布时间】:2011-12-17 16:54:51
【问题描述】:
我想确保变量不包含特定字符(在本例中为“α”),但以下代码失败(返回 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 和 zsh 4.3.11 且具有相同区域设置的 Linux 机器上进行了测试,并且它在那里工作——即FOO="test" && [[ $FOO =~ '^[^α]*$' ]] 返回成功。我正在运行 Mac OS X 10.7.2。
【问题讨论】: