Bash4にアップグレードしましたが、正規表現が一致しないことがわかりました。
$ echo $BASH_VERSION
4.1.2(1)-release
$ [[ "20110228" =~ "^[0-9]{8}$" ]] && echo matches
しかし、Bash 3.0は次のようになります。
$ echo $BASH_VERSION
3.00.16(1)-release
$ [[ "20110228" =~ "^[0-9]{8}$" ]] && echo matches
matches
なぜこれが起こるのですか?私は正しくインストールしていませんか?
ベストアンサー1
これを確認してください回答それはすべてです。 bash 3バージョン3.00を使用しているので、問題を考慮することができます。まもなくバージョン3.2以降、[[
コマンドに文字列引数を引用する演算子は=~
文字列の一致を強制するため、bash 4の正しいパターンは次のとおりです。
$ [[ "20110228" =~ ^[0-9]{8}$ ]] && echo matches
matches