2013-03-15 97 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返回状态告诉你是否去上班