cygwin bash - if 문이 작동하지 않습니다

cygwin bash - if 문이 작동하지 않습니다

저는 bash 스크립팅을 처음 접하고 Windows에서 배우려고 하여 cygwin을 다운로드했습니다. Windows 10, cygwin v2.5.1 사용

bash 패키지를 설치했는지 확인하고(그렇게 했습니다) 몇 가지 튜토리얼을 진행하기 시작했지만 if...fi명령문에 도달했을 때 작동이 멈췄습니다. 내 코드는 다음과 같습니다.

#!/usr/bin/env bash
#
echo 'Hello'
#
if [ 1 -eq 1 ]
then
  echo 'Success'
fi
echo 'Hello Again'

출력은 다음과 같습니다

>./test.sh
Hello
./test.sh: line 10: syntax error: unexpected end of file

나는 평생 동안 무엇이 잘못되었는지 알아낼 수 없습니다. if 문을 복사/붙여넣고 다양한 유형의 표현식을 시도했지만 if전혀 등록되지 않는 것 같습니다.

어쩌면 내가 cygwin을 잘못 구성한 걸까요?

답변1

음... 바보같아. 하지만 같은 문제를 겪고 있는 다른 사람을 위해 이 질문에 대답하겠습니다.

저는 Windows 컴퓨터에서 개발 중이므로 CRLF 줄 끝을 사용하고 있습니다. 저는 Sublime Text를 사용하고 항상 Windows용으로 개발하고 있기 때문에 줄 끝을 생각하지 않습니다.

그러나 물론 bash 스크립트는 LF 줄 끝을 사용해야 합니다. 그렇지 않으면 이상한 일이 발생합니다. echo명령이 실행되도록 허용하는 이유와 실행하지 않는 이유는 말할 수 없지만 if...fi줄 끝을 LF로 전환하면 모든 것이 예상대로 작동했습니다.

답변2

나에게는 효과가 있지만 줄 종료를 DOS 스타일(CR/LF 줄 종료)로 변경하면

$ u2d ./prova.sh
unix2dos: converting file ./prova.sh to DOS format...

$ ./prova.sh
Hello
./prova.sh: line 10: syntax error: unexpected end of file

따라서 스크립트를 유닉스 스타일(LF를 줄 끝으로)로 변환하세요.

$ d2u ./prova.sh
dos2unix: converting file ./prova.sh to Unix format...
$ ./prova.sh
Hello
Success
Hello Again

관련 정보