私のスクリプト名は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
このmonth
行day
は何もしません。有効な数字でないと、bc
キャッチされないエラーが発生します。