我的脚本名称是 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
则会抛出未捕获的错误。