원격 컴퓨터에서 실행하려고 하는데 "예기치 않은 파일 끝" 메시지가 나타납니다.
그러나 이 줄을 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/
위치를 입력하고 클릭하세요.^M
v
m
- 를 설치
dos2unix
하고 실행합니다dos2unix file
.