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

おすすめ記事