1. ホーム
  2. regex

[解決済み] bashスクリプトで正規表現を使用するには?

2023-06-07 02:14:15

質問

正規表現を使って、変数が有効な年を持つかどうかをチェックしたい。を読むと bashマニュアル 演算子=~を使用することができることを理解しました。

下の例を見て、私は "not OK" が表示されることを期待しますが、私は "OK" を見ます。私は何を間違えているのでしょうか?

i="test"
if [ $i=~"200[78]" ]
then
  echo "OK"
else
  echo "not OK"
fi

どのように解決するのですか?

3.1と3.2の間で変更されました。

これは、bash-3.1 のリリース以降に bash-3.2 に追加された新機能の簡潔な説明です。

コマンドの =~ 演算子の文字列引数を引用することで、他のパターンマッチング演算子と同様に文字列マッチングを強制するようになった。

そのため、このように引用符を付けずに使用します。

i="test"
if [[ $i =~ 200[78] ]] ; then
    echo "OK"
else
    echo "not OK"
fi