내 스크립트 이름은 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
잡히지 않는 오류가 발생합니다.