2013-03-15 95 views
0

我試圖表明,如果你當月輸入的東西它顯示了一個月 如january=1february=2march=3 ...顯示一個月

和年201220132014 ...

但如果你輸入的東西大於12比它應該告訴你"sorry",我不知道如何使消息工作。

echo " please type a number for a month" 
read month 
echo " please type a number for a year" 
read year 

if [ "$month" = "1-12" ] 
then 
     cal "$month" "$year" 
     sleep 2 
     echo " thank you, good bye... " 
else 
     echo " sorry " 
     sleep 2 
fi 

回答

0

要測試的值只使用邏輯和兩個算術條件:

if ((month >= 1)) && ((month <= 12)) ; then 
    cal $month $year 
else 
    echo Sorry. 
fi 
1
if [[ $month -lt 13 && $month -gt 0 ]] 
then 
     cal "$month" "$year" 
     sleep 2 
     echo " thank you, good bye... " 
else 
     echo " sorry " 
     sleep 2 
fi 
1

它是更安全,讓卡爾驗證輸入的完整性。

cal $month $year 2>/dev/null 
if [ $? -ne 0 ]; then 
    echo sorry 
fi 

這將需要的是不是整數,以及輸入照顧。

1

如何

read -r -p 'please type a number for a month: ' month 
read -r -p 'please type a number for a year: ' year 
cal "$month" "$year" 2&>1 1>/dev/null && \ 
    { cal "$month" "$year" ; echo ' thank you, good bye... ' ; } || \ 
    echo ' sorry ' 
  • 讀可以提示你,無需回聲
  • CAL返回狀態告訴你是否去上班