2011-01-13 27 views
1

我想從用戶那裏捕獲每月的一天,並且想要檢查一天是否有效 - 在1到31之間。我不想要用戶必須添加前導0到單個數字天。如何在bash if語句中完成此檢查?如何檢查輸入的數字是否在1到31之間

感謝。

+0

這裏的正則表達式:`/ ^(?[012] \ d | 3 [01])$ ​​/`;我將bash部分留給其他人。另外請注意,這有點愚蠢,因爲「31」在一些年份內不是有效的,也不是「30」或甚至是「29」。 – Phrogz 2011-01-13 02:27:13

+1

@Phrogs:你的正則表達式允許使用'0'或'00`。要限制爲1-31,您需要使用`^(0?[1-9] | [12] \ d | 3 [01])$``來代替。 – LukeH 2011-01-13 02:33:13

回答

5

這不是一個正則表達式的工作!

這是conditional expression的工作。

這裏有一些代碼讓你開始。

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

當然,日期驗證遠比這更復雜。二月有幾天?

2

使用正確的工具進行工作。正則表達式不是這份工作的正確工具。

2

只是做一個數字比較:

if ((var >= 1 && var <= 31)) 
then 
    echo "Valid" 
fi 
相關問題