正規表現を使用して、変数に有効な年があるかどうかを確認したい。 bash manual を読むと、演算子=〜を使用できることがわかります
以下の例を見ると、「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
演算子の周りにスペースが必要です=〜
i = "test" if [[$ i =〜 "200 [78]"]]; then echo "OK" else echo "not OK" fi