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."

||다음 문은 이전 문이 오류를 나타내는 0이 아닌 반환 코드로 끝나는 경우에만 실행됩니다.

옆에

이 줄은 그다지 많은 일을 하지 않는 것 같습니다.

year=$(echo "$year" | bc)
month=$(echo "$month" | bc)
day=$(echo "$day" | bc)

변수 및 가 유효한 경우 yearmonthday은 아무 작업도 수행하지 않습니다. 유효한 숫자가 아니면 bc잡히지 않는 오류가 발생합니다.

관련 정보