내 스크립트 이름은 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
이 month
행 day
은 아무 작업도 수행하지 않습니다. 유효한 숫자가 아니면 bc
잡히지 않는 오류가 발생합니다.