쉘 스크립트의 else 부분에서 오류가 발생하는 이유는 무엇입니까? [복사]

쉘 스크립트의 else 부분에서 오류가 발생하는 이유는 무엇입니까? [복사]

아래 스크립트를 시도 중입니다. date1의 filesdir 폴더에 두 개의 파일을 받고 싶습니다. 날짜가 1이면 두 파일이 모두 수신되었는지 확인해야 하기 때문에 반복하고 루프를 확인할 때마다 카운터 "카운트"를 증가시키려고 합니다. 날짜가 1이고 파일이 수신되지 않으면 몇 초 정도 기다렸다가 다시 확인해야 합니다(파일은 확실히 수신되므로). 날짜가 1이 아니면 파일을 삭제하고 while 루프를 종료해야 합니다. 나는 다음을 시도하고 있습니다.

day_of_month=$(date +%d)
export filesdir=/dir1/dir2/dir3
local count=0
numFilesReceived=0
while true; do
    files=$(find $filesdir -name '*.txt.gz' -type f -mmin -1)
    if [ "$day_of_month" == "1" ]; then
        if [ -f "$files" ]; then
            count=$((count + 1))
            break
            if [ "$numFilesReceived" == "$count" ]; then
                echo "All $count data received!"
                break 3
            fi
        fi
        else
            echo "No data received yet!" 
        fi
        fi
         else
        rm $files
    fi
     done

나는 내가 정말로 원하는 것을 얻지 못했습니다. 대신 if else 부분에서 오류가 발생합니다.

답변1

s의 개수는 s의 개수 fi와 같아야 합니다 . if현재 가 너무 많습니다 fi.

is, not 이 포함된 단일 표현식 if의 구조입니다 .elseif... then... else... fiif... then... fi... else... fi

관련 정보