![구문 오류: 예기치 않은 파일 끝](https://linux55.com/image/57261/%EA%B5%AC%EB%AC%B8%20%EC%98%A4%EB%A5%98%3A%20%EC%98%88%EA%B8%B0%EC%B9%98%20%EC%95%8A%EC%9D%80%20%ED%8C%8C%EC%9D%BC%20%EB%81%9D.png)
#!/bin/bash
#organization: Seneca College
#Purpose: Validate a date
#Usage: chkdate year month day
#
year=$1; month=$2; day=$3; extra=$4
if [[ "$year" == "" || "$month" == "" || "$day" == "" ]]; then
# Not enough data!
echo Usage: chkdate year month day
exit 0
fi
if [[ ! ( $year =~ ^[0-9]+$ && $month =~ ^[0-9]+$ && $day =~ ^[0-9]+$ ) ]]; then
# Date not numeric!
echo Usage: chkdate year month day
exit 1
fi
if [[ $year -lt 1 || $year -gt 9999 || $month -lt 1 || $month -gt 12 || $day -lt 1 || $day -gt 31 ]]; then
# Date out of range!
echo Usage: chkdate year month day
exit 2
fi
if [[ ( $month == 1 || $month == 3 || $month == 5 || $month == 7 || $month == 8 || $month == 10 || $month == 12 ) && $day -gt 31 ]]; then
# Invalid day!
echo Usage: chkdate year month day
exit 3
fi
if [[ ( $month == 4 || $month == 6 || $month == 9 || $month == 11 ) && $day -gt 30 ]]; then
# Invalid day!
echo Usage: chkdate year month day
exit 4
fi
if [[ ($month == 9) && ($year == 1752) && ( $day -gt 2) && $day -le 14 ]] ; then
#invalid day!
echo Usage: chkdate year month day
exit 5
date -d $2/$3/$1 > /dev/null 2>&1
if [[ "$@" ]] ; then
echo "valid date"
else
echo "not a valid"
fi
내 스크립트에 44번째 줄이 있다고 하는데 총 줄수는 43개입니다
답변1
종료되지 않은 루프가 있습니다 if
. 여기에 fi
for 루프 를 추가하세요 .if
if [[ ($month == 9) && ($year == 1752) && ( $day -gt 2) && $day -le 14 ]]
이것을 추가한 후 fi
스크립트를 실행할 때 얻는 출력은 다음과 같습니다.
chkdate 1342 1 21
valid date
chkdate 13as 1 21
Usage: chkdate year month day