2015年の更新:msysgitは廃止されました。git-for-windowsに
付属しているbashを使用する必要があります。この回答で
述べたように、構文が機能するはるかに新しいbash(4.3+)を使用します。
=~
元の回答(2013年3月)
msysgitにパッケージされているbashは、この演算子を完全にサポートするには古すぎる可能性があります。
確かに古すぎる引用符で囲まれていない正規表現と比較する、「Bashバージョン3」および「bashスクリプトで正規表現を使用するにはどうすればよいですか?」で説明されているように:
Bashのバージョン3.2以降、一致する式は引用符で囲まれなくなりました。
実際、mklement0はコメントで言及しています:
=~
bash 3.0で導入され、RHSで引用符で囲まれていないトークンを常にサポートしていました。
3.1.xまでは、引用符で囲まれたトークンは引用符で囲まれていないトークンと同じように扱われていました。どちらも正規表現として解釈されていました。
3.2で変更されたのは、引用符で囲まれたトークン(またはトークンの引用符で囲まれた部分文字列)がリテラルとして扱われるようになったことです。
しかし、(最新のmsysgit 1.8.1.2で)引用符で試しましたが、それでも失敗します:
vonc@voncvb /
$ /bin/bash --version
GNU bash, version 3.1.0(1)-release (i686-pc-msys)
Copyright (C) 2005 Free Software Foundation, Inc.
vonc@voncvb /
$ variable="This is a fine mess."
vonc@voncvb /
$ echo "$variable"
This is a fine mess.
vonc@voncvb /
$ if [[ "$variable" =~ T.........fin*es* ]] ; then echo "ok" ; fi
bash: conditional binary operator expected
bash: syntax error near `=~'
vonc@voncvb /
$ if [[ "$variable" =~ "T.........fin*es*" ]] ; then echo "ok" ; fi
bash: conditional binary operator expected
bash: syntax error near `=~'
vonc@voncvb /