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)

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

관련 정보