2013-03-24 3 views
2

셸 스크립팅을 처음 사용합니다. 예기치 못한 파일 오류가 발생하는 스크립트를 작성하려고했습니다. 나는 stackoverflow에 다른 솔루션을 확인했지만, 여기서는 해결할 수 없다. 어떤 도움을 주시면 감사하겠습니다. 톰캣 서블릿 엔진이Linux 스크립트 예기치 않은 파일 끝내기 오류

+3

당신이에이 스크립트를 작성 했 :

#!/bin/bash 

스크립트는 아마 다음과 같이 다소 같아야합니다

recode ibmpc..latin1 your.sh 

은 또한 스크립트의 첫 번째 줄에 인터프리터를 지정해야 리눅스 시스템이나 Windows에서 만든 다음 파일을 전송 했습니까? – Joni

+0

정상적으로 보입니다. 이것이 당신 스크립트 전부인 것이 확실합니까? –

+0

예 모든 스크립트입니다. 그러나 Joni가 윈도우즈에서이 파일을 만든 다음 리눅스로 옮겼다 고 말했습니다. –

답변

2

Windows에서 파일을 만들었 기 때문에 원래 문제는 줄 바꿈 문자가 일치하지 않아 발생했을 가능성이 큽니다. Windows는 줄 바꿈을 CR-LF로 인코딩하지만 Linux/Unix는 LF 및 Mac OS 만 CR로 사용합니다. 예를 들면 다음과 같이 수정할 수 있습니다.

#!/bin/bash 
if [ "$(/etc/init.d/tomcat7 status)" == " * Tomcat servlet engine is not running." ]; then 
    /etc/init.d/tomcat7 start 
fi 
0

이이 [ :Unexpected operator in shell programming보고 해결 : 예기치 않은 연산자를 실행하지 않는 * : 내 스크립트

if [ "$(/etc/init.d/tomcat7 status)" == " * Tomcat servlet engine is not running." ]; then /etc/init.d/tomcat7 start; fi 

으로 나는 리눅스에서 이것을 만드는 시도하고 지금은 오류 [얻을 제안입니다.

sh 대신 bash로 실행해야했습니다.

2

Windows에서 스크립트를 작성한 것처럼 대부분의 경우 문제는 Windows에서 줄 끝 문자 \ r \ n의 인코딩이 다르지만 Linux에서는 \ n입니다.

스크립트에 dos2unix을 사용해 보시고 다시 실행하십시오.

관련 문제