sh 스크립트가 실행되지 않지만(파일이 예기치 않게 종료됨) 줄은 정상적으로 실행됩니다.

sh 스크립트가 실행되지 않지만(파일이 예기치 않게 종료됨) 줄은 정상적으로 실행됩니다.

원격 컴퓨터에서 실행하려고 하는데 "예기치 않은 파일 끝" 메시지가 나타납니다.

그러나 이 줄을 CLI에 붙여 넣으면 정상적으로 실행됩니다.

# if [ -f running.script ] ; then echo 'Script already running.'
> else echo 'Script not running.' ; touch running.script
<ervers_status | awk 'NR==1 {print $3}' | tr -d '\r')
<ervers_status | awk 'NR==2 {print $3}' | tr -d '\r')
> if [ "$sip1" = 0 ] ; then echo "Sip Server 1 UP" ; fi
> if [ "$sip1" = 1 ] ; then echo "Sip Server 1 DOWN" ; fi
> if [ "$sip1" = 2 ] ; then echo "Sip Server 1 IDLE" ; fi
> if [ "$sip2" = 0 ] ; then echo "Sip Server 2 UP" ; fi
> if [ "$sip2" = 1 ] ; then echo "Sip Server 2 DOWN" ; fi
> if [ "$sip2" = 2 ] ; then echo "Sip Server 2 IDLE" ; fi
> rm running.script
> fi
Script not running.
Sip Server 1 UP
Sip Server 2 IDLE
#sh script.sh
script.sh: line 14: syntax error: unexpected end of file
# cat script.sh
#!/bin/sh
if [ -f running.script ] ; then echo 'Script already running.'
else echo 'Script not running.' ; touch running.script
    sip1=$(cat /var/mand/sipservers_status | awk 'NR==1 {print $3}' | tr -d '\r')
    sip2=$(cat /var/mand/sipservers_status | awk 'NR==2 {print $3}' | tr -d '\r')
    if [ "$sip1" = 0 ] ; then echo "Sip Server 1 UP" ; fi
    if [ "$sip1" = 1 ] ; then echo "Sip Server 1 DOWN" ; fi
    if [ "$sip1" = 2 ] ; then echo "Sip Server 1 IDLE" ; fi
    if [ "$sip2" = 0 ] ; then echo "Sip Server 2 UP" ; fi
    if [ "$sip2" = 1 ] ; then echo "Sip Server 2 DOWN" ; fi
    if [ "$sip2" = 2 ] ; then echo "Sip Server 2 IDLE" ; fi
    rm running.script
fi
#

스크립트의 내용을 정확하게 보여주는 NP++의 캡처를 아래에 포함했습니다.

여기에 이미지 설명을 입력하세요.

답변1

긴 이야기 짧게

저주파를 입력하세요줄 끝을 Unix로 변환해야 합니다.만약에.


스크립트의 내용을 정확하게 보여주는 NP++의 캡처를 아래에 포함했습니다.

실제로 표시된 것과 정확히 일치하지는 않습니다. 각 줄 끝에 추가 제어 코드가 있습니다. 그것들을 삭제해야 합니다.

다음 방법 중 하나를 통해 Windows 파일 형식을 제거하려면:

  • vi file그런 다음 실제 제어 :1,$s/^M/위치를 입력하고 클릭하세요.^Mvm
  • 를 설치 dos2unix하고 실행합니다 dos2unix file.

관련 정보