본문 바로가기

카테고리 없음

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

반응형

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

 

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

 

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

 

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

 

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

 

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

 

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

 

따라서 해당 문서에 대해서 

 

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

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

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

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

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

 

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

 

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

 

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

 

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

1

반응형