正規表現を使用して、変数に有効な年があるかどうかを確認したいと思います。読むbashのマニュアルを演算子=〜を使用できることがわかります。
以下の例を見ると、「OKではない」と表示されるはずですが、「OK」と表示されます。私は何が間違っているのですか?
i="test"
if [ $i=~"200[78]" ]
then
  echo "OK"
else
  echo "not OK"
fi
    正規表現を使用して、変数に有効な年があるかどうかを確認したいと思います。読むbashのマニュアルを演算子=〜を使用できることがわかります。
以下の例を見ると、「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
    a +b、構文エラーを報告する場合...
                    a\ \+bスペースとプラス文字をエスケープするために使用します。
                    演算子=〜の周りにスペースが必要です
i = "test" if [[$ i =〜 "200 [78]"]]; その後 エコー「OK」 そうしないと エコー「OKではありません」 fi