83

正規表現を使用して、変数に有効な年があるかどうかを確認したい。bash マニュアルを読んで、演算子 =~ を使用できることを理解しました

以下の例を見ると、「not OK」と表示されるはずですが、「OK」と表示されています。私は何を間違っていますか?

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

2 に答える 2

116

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

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

[[ コマンドの =~ 演算子の文字列引数をクォートすると、他のパターン マッチング演算子と同様に、文字列の一致が強制されるようになりました。

したがって、引用符なしで次のように使用します。

i="test"
if [[ $i =~ 200[78] ]] ; then
    echo "OK"
else
    echo "not OK"
fi
于 2008-11-20T10:45:17.070 に答える
8

演算子の周りにスペースが必要です=〜

i = "test"
if [[$ i =〜 "200 [78]"]];
それから
  エコー「OK」
そうしないと
  エコー「OKではない」
fi
于 2010-02-24T00:54:58.997 に答える