ifコマンドをどのように書きますか?

ifコマンドをどのように書きますか?

私のスクリプト名は1です。 「1 2012 12 12」と入力すると。現在の日付カレンダーが表示され、「1 2323232」などの無効な日付を入力すると、calでエラーが発生するため、ifループに入れることができ、エラーが発生した場合は「無効な日付」が表示されます。

year=$(echo "$year" | bc)
month=$(echo "$month" | bc)
day=$(echo "$day" | bc)

cal $day $month $year

if [ $? -eq 0];
        then
        echo "Date is valid"
else
        echo "Date in not valid"
fi

ベストアンサー1

これはうまくいきません:

cal $day $month $year

cal月と年のパラメータのみが予想されます。努力する:

cal $month $year

月と年が無効な場合にメッセージを印刷するためにループは必要ありません。次のコードは、月と年が有効な場合はカレンダーを表示し、無効な場合はエラーメッセージを表示します。

cal $day $month $year 2>/dev/null || echo "Date is not valid."

||次の文は、前の文がエラーを示すゼロ以外の戻りコードで終わる場合にのみ実行されます。

横に

この行はあまり多くのことをしないようです。

year=$(echo "$year" | bc)
month=$(echo "$month" | bc)
day=$(echo "$day" | bc)

変数とが有効な場合、yearこのmonthdayは何もしません。有効な数字でないと、bcキャッチされないエラーが発生します。

おすすめ記事