我的腳本名稱是 1。它顯示當前日期日曆,當我輸入像“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
將會拋出一個未捕獲的錯誤。