"if" 문으로 인해 bash 스크립트의 예기치 않은 "완료" 표시 근처에서 구문 오류가 발생함 [닫기]

"if" 문으로 인해 bash 스크립트의 예기치 않은 "완료" 표시 근처에서 구문 오류가 발생함 [닫기]

루프에서 5번 반복할 때마다 새 파일을 생성하는 스크립트를 작성하려고 합니다.

#!/bin/bash
counter=1
timestamp="$(($(date +%s%N)/1000000))"
fileName="file"$timestamp".txt"
echo $fileName
while [ $counter -le 5 ]
do
        echo $counter
        ((counter++))
        timestamp="$(($(date +%s%N)/1000000))"
        echo $counter
        if [ $counter == 5 ]
        then
            echo "Creating new file"
            fileName="file"$timestamp".txt"
            counter=1
        echo "${timestamp}" >> $fileName
        sleep 2s
        echo $counter
done

스크립트가 오류를 반환합니다.

file1561151901170.txt
ruunn.sh: line 20: syntax error near unexpected token `done'
ruunn.sh: line 20: `done'

해당 조항을 제거하면 if:

#!/bin/bash
counter=1
timestamp="$(($(date +%s%N)/1000000))"
fileName="file"$timestamp".txt"
echo $fileName
while [ $counter -le 5 ]
do
        echo $counter
        ((counter++))
        timestamp="$(($(date +%s%N)/1000000))"
        echo $counter
        echo "${timestamp}" >> $fileName
        sleep 2s
        echo $counter
done

오류가 발생하지 않으며 출력은 예상한 대로입니다.

file1561152065603.txt
1
2
2
2
3
3
3
4
4
4
5
5
5
6
6

if그러면 그 조항 에 문제가 있는 것 같은데요 ?

if이 절이 파일 생성 프로세스에 포함될 수 있도록 스크립트를 어떻게 수정합니까 ?

답변1

당신은 if그것의 끝을 놓쳤습니다 fi.

관련 정보