这个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)

如果变量yearmonthday有效,则这些行不执行任何操作。如果它们不是有效数字,bc则会抛出未捕获的错误。

相关内容