私は、変数が特定の文字(この場合の「α」)が含まれていないことを確認するが、次のコードは、失敗した(リターン1):マッチUnicode文字
FOO="test" && [[ $FOO =~ '^[^α]*$' ]]
編集:以下のステムからのフィードバックに基づいてパターンを変更し、最初から最後までの「非 'α'」文字のみを一致させる必要があります。
「α」をたとえば'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:私は今、Linuxマシンが同一のロケール設定でのzsh 4.3.11でのUbuntu 11.10を実行する上でテストされ、そしてそこにそれが動作する - すなわち、成功を返しFOO="test" && [[ $FOO =~ '^[^α]*$' ]]
。私はMac OS X 10.7.2を使用しています。
よろしいですか。したがって、文字列全体を必ずしも一致させる必要はありません。うん、あなたは正しいです、それは 'FOO =" test "&& [[$ FOO =〜 '^ [^α] * $']]'でなければなりません。しかしそれはまだ失敗します。 'α'を 'x'に変更すると、ここで 'α'文字を使用すると失敗するものがなければなりません。 – beta