쉘 스크립트는 다음과 같습니다:
#!/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)이 아닌 다른 쉘을 사용할 수도 있습니다.