Bash正規表現の一致は4.1では動作しません。

Bash正規表現の一致は4.1では動作しません。

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

おすすめ記事