0

我试图表明,如果您为该月键入一些内容,它会显示该月份,例如january=1, february=2, march=3...

和年份2012, 2013, 2014...

但是,如果您输入的内容超过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
4

4 回答 4

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
于 2013-03-15T23:44:00.773 回答
1

允许 cal 验证输入的完整性更安全。

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

这也将处理不是整数的输入。

于 2013-03-15T23:45:29.260 回答
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 '
  • read 可以提示你,不需要 echo
  • cal return status 告诉你它是否会起作用
于 2013-03-16T00:53:06.710 回答
0

要测试该值,只需使用逻辑和两个算术条件:

if (( month >= 1 )) && (( month <= 12 )) ; then
    cal $month $year
else
    echo Sorry.
fi
于 2013-03-15T23:43:02.123 回答