正規表現を使用して、変数に有効な年があるかどうかを確認したいと思います。読む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