0

月に何かを入力するとjanuary=1、 、february=2march=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 リターン ステータスは、それが機能するかどうかを示します
于 2013-03-16T00:53:06.710 に答える
0

値をテストするには、論理条件と2つの算術条件を使用します。

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