Bash 스크립트가 "예기치 않은 토큰 '완료' 근처에 구문 오류가 발생했습니다."를 생성합니다.

Bash 스크립트가 "예기치 않은 토큰 '완료' 근처에 구문 오류가 발생했습니다."를 생성합니다.

쉘 스크립트는 다음과 같습니다:

#!/bin/bash
while [ true ]; do
    clear
    date
    who
    sleep 5
done 

int를 실행하면 다음과 같은 결과를 얻습니다.

yuikus@DESKTOP-VTJ0OG4:~$ cd /mnt/d/lab_oc_1/lab_oc_2/
yuikus@DESKTOP-VTJ0OG4:/mnt/d/lab_oc_1/lab_oc_2/$ sh bag.sh
bag.sh: 7: Syntax error: "done" unexpected (expecting "do")
yuikus@DESKTOP-VTJ0OG4:/mnt/d/lab_oc_1/lab_oc_2/$ bash bag.sh
bag.sh: line 7: syntax error near unexpected token `done'
bag.sh: line 7: `done '

왜 작동하지 않나요? 저는 Windows에서 Ubuntu를 실행하고 있습니다.

답변1

Windows에서 Ubuntu를 운영하고 있으므로 아마도 Windows 및 Linux 편집기를 모두 사용하여 스크립트를 편집하게 될 것입니다. 그러나 Windows와 Linux에서는 서로 다른 줄 종결자를 사용하므로 스크립트 인터프리터가 혼동될 수 있습니다.

dos2unix스크립트 파일을 실행하면 Windows(CR-LF) 줄 끝이 Unix 줄 끝으로 대체됩니다.

$ dos2unix bag.sh

그런 다음 원래 의도한 대로 스크립트를 실행합니다. #!-line 선언이 있으므로 /bin/bash스크립트를 실행 가능하게 만들고 다음과 같이 실행하는 것이 더 합리적입니다.

$ ./bag.sh

Bash에서 실행하는 대신 sh원하는 쉘(Bash)이 아닌 다른 쉘을 사용할 수도 있습니다.

관련 정보