카테고리 없음

[리눅스] 윈도우에서 작성한 쉘스크립트 파일 리눅스에서 에러나는 경우

화끈한 늑대 2022. 3. 14. 14:23
반응형

윈도우, 리눅스 모두 문서를 작성하다가 줄바꿈을 하는 경우, 동일하게 enter를 누르게 된다. 이를 개행이라고 한다.

 

하지만 윈도우와 리눅스는 문서의 줄바꿈을 받아드리는 태도는 다르다.

 

윈도우의 경우 \r\n 로 표현을 하고 

 

리눅스에 경우는 \n 로만 표현한다.

 

따라서 윈도우에서 편집을 한 문서를 리눅스에서 받아 들일때는 

 

\n만 개행으로 인식하기 때문에 \r은 해당 꺽쇠 표기(caret notation)인 ^M로 화면에 표시하게 된다.

 

이렇게 되면 리눅스에서 쉘스크립트를 실행 할때 에러가 발생하게 된다.

 

따라서 해당 문서에 대해서 

 

아래와 같은 리눅스 명령을 실행 해야 한다. 

1
sed -i 's/\r$//' 스크립트.sh
cs

sed : streamlined editor 의 약자로써 수정, 치환, 삭제, 글추가 등 편집기능이 있다.

정규식에서 s는 치환을 의미한다. \r을 치환한다는 뜻.

$는 행의 끝을 나타내는 것이다.

 

그래서 결론은 행의 끝에 \r의 문자 치환한다. 무엇으로 ?

 

맨 뒤에 // 사이에 아무 문자도 없기 때문에 !

 

마지막 결론은 행끝에 \r 문자를 빈값으로 치환한다는 뜻이다!

 

저 명령어를 리눅스에서 실행하고 나면 정상적으로 쉘스크립트를 실행할 수 있다.

1

반응형