2

シェルスクリプトは初めてです。予期しないファイルの終わりエラーをスローするスクリプトを書き込もうとしていました。私はstackoverflowで他の解決策をチェックしましたが、ここでは解決できません。どんな助けでもいただければ幸いです。私のスクリプトは

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

提案されているように、これをLinuxで作成しようとしましたが、エラーが発生しました[:* Tomcatサーブレットエンジンが実行されていません。:予期しない演算子

4

3 に答える 3

2

Windowsでスクリプトを書いたとき、おそらく問題は、Windowsでは行末文字のエンコーディングが異なることですが、Linuxでは単一の\nです。

dos2unixスクリプトで使用してみて、もう一度実行してください。

于 2013-03-24T11:40:26.700 に答える
2

Windowsでファイルを作成したため、元の問題は改行文字の不一致が原因である可能性があります。Windowsは改行をCR-LFとしてエンコードしますが、Linux / UnixはLFのみを使用し、MacOSはCRのみを使用します。あなたは例えばでそれを修正することができます

recode ibmpc..latin1 your.sh

また、スクリプトの最初の行でインタプリタを指定する必要があります。

#!/bin/bash

スクリプトはおそらく次のようになります。

#!/bin/bash
if [ "$(/etc/init.d/tomcat7 status)" == " * Tomcat servlet engine is not running." ]; then
  /etc/init.d/tomcat7 start
fi
于 2013-03-24T11:40:37.777 に答える
0

[:シェルプログラミングの予期しない演算子を見てこれを解決しました。

shではなくbashとして実行する必要がありました。

于 2013-03-24T11:39:37.273 に答える