2011-01-13 4 views
1

ユーザーから月の日付を取得しようとしていて、その日が有効かどうかを確認したいと思います。ユーザーは1桁の数字の先頭に0を加えなければなりません。このチェックをbash if文でどのように行うのですか?入力された数字が1から31の間であるかどうかを確認するには

ありがとうございました。

+0

はここに正規表現です: '/ ^(?[012] \ D | 3 [01])$ ​​/';私は他の誰かにbashの部分を残します。また、 '31'は何ヶ月間も有効ではないので、少しばかげていることに注意してください。年の部分集合については' 30'でも '29'でもないので注意してください。 – Phrogz

+1

@Phrogs:あなたの正規表現は '0'または' 00'を許可します。 1-31に制限するには、代わりに '^(0?[1-9] | [12] \ d | 3 [01])$'のようなものが必要です。 – LukeH

答えて

5

これは正規表現の仕事ではありません!

これはconditional expressionのジョブです。

ここにいくつかのコードがあります。

if [[ $number -lt 31 ]]; then 
    echo $number is less than 31 
else 
    echo $number is greater than 31 
fi 

もちろん、日付の検証はこれよりもはるかに複雑です。 2月に何日ありますか?

2

ジョブには適切なツールを使用してください。正規表現はこの仕事のための正しいツールではありません。

+4

そして、適切なツールは何ですか? –

+0

任意のチューリング完全なプログラミング言語:)つまり、条件文を持つ任意の言語。言い換えれば、任意のプログラミング言語:P –

2

ただ数値比較ん:

if ((var >= 1 && var <= 31)) 
then 
    echo "Valid" 
fi 
関連する問題