2011-09-15 4 views
0

私はシェルスクリプトに次の行を持っています私がWindows XP PCでNotepadd ++のファイルを編集していたときのエンコーディングの問題として、BOMなしでUTF-8でエンコードするようにエンコーディングを設定し、すべての行のエンディングがLinuxスタイルであることを確認しましたこのエラー。シェルスクリプトエラー

誰でも手助けできますか?

おかげ

答えて

2

if [ -f /etc/init.d/tomcat6 ] && ps -C java | grep -qs 'java'; then 
    ... 
fi 

[を試してみて、基本的testコマンドの別名です。 testは、引数psについて何も知らない。別の方法としては、(単に構文を明確にするために)明示的にtestを使用することがあります。

if test -f /etc/init.d/tomcat6 && ps -C java | grep -qs 'java'; then 
    ... 
fi 

をあなたは[代わりのtestを使用する場合は、]と表現を終了することを余儀なくされています。

+1

「ps」が決して実際に '['に渡されることはありません。 –

+2

[最後の引数は ']'であると想定しており、構文エラーはそうではないということです。シェルは3つのコマンドを呼び出します: "[-f /etc/init.d/tomcat6"と "ps -C java"と "grep -qs 'java']" ...ただし、実際には2番目の2つを呼び出さない最初のファイルは失敗します(grepからエラーが出ることはありません ']'は存在しません)。 –

1

&&があなたの[コマンドを終了します。

if [ -f /etc/init.d/tomcat6 ] && ps -C java | grep -qs 'java'; then 
1

の構文は-aです。

ps -C java|grep -qs 'java'を実行する必要があります。現在のところ、式として評価されています。これを試してみてください:

if [ -f /etc/init.d/tomcat6 -a $(ps -C java|grep -qs 'java') ]; then