這個if指令怎麼寫?

這個if指令怎麼寫?

我的腳本名稱是 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)

如果變數yearmonthday, 有效,則這些行不執行任何操作。如果它們不是有效的數字,bc將會拋出一個未捕獲的錯誤。

相關內容