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