!["if" 문으로 인해 bash 스크립트의 예기치 않은 "완료" 표시 근처에서 구문 오류가 발생함 [닫기]](https://linux55.com/image/155876/%22if%22%20%EB%AC%B8%EC%9C%BC%EB%A1%9C%20%EC%9D%B8%ED%95%B4%20bash%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98%20%EC%98%88%EA%B8%B0%EC%B9%98%20%EC%95%8A%EC%9D%80%20%22%EC%99%84%EB%A3%8C%22%20%ED%91%9C%EC%8B%9C%20%EA%B7%BC%EC%B2%98%EC%97%90%EC%84%9C%20%EA%B5%AC%EB%AC%B8%20%EC%98%A4%EB%A5%98%EA%B0%80%20%EB%B0%9C%EC%83%9D%ED%95%A8%20%5B%EB%8B%AB%EA%B8%B0%5D.png)
루프에서 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
.