2011-07-21 16 views
1

私は(ラインがコマンドを終了するために壊す使用しているためそれはそうシンプルなLinuxのスクリプト

cp: target `\r' is not a directory 
cp: target `\r' is not a directory 
rm: cannot remove `\r': No such file or directory 
* Usage: /etc/init.d/tomcat6 {start|stop|restart|try-restart|force-reload|status} 

取得

sudo cp "apache-solr-3.3.0/dist/apache-solr-3.3.0.war" "/var/lib/tomcat6/webapps/solr.war" 
sudo cp -R "apache-solr-3.3.0/example/solr/" "/var/lib/tomcat6/solr/" 
sudo cp "solr.xml" "/etc/tomcat6/Catalina/localhost/solr.xml" 
rm -R "apache-solr-3.3.0" 
sudo service tomcat6 restart 

新しいサーバー上でのSolrをisntallする自動スクリプトを作成する問題を抱えていますあたかもWindowsのバットファイルであるかのように)。 1つのファイルで複数のコマンドを実行するにはどうすればいいですか

答えて

7

おそらく、スクリプトでWindowsの改行を使用している可能性があります。 dos2unixユーティリティを使用してLinux改行に変換してください。dos2unix your_script.sh

+0

またはdos2unixで使用しましたcat oldfild | tr '\ n \ r "' \ n \ n '>> newfile –

2

この問題は、シェルスクリプトにWindowsの行末(\r\n)があるように見えます。 Bashは\nしか気にしないので、\rはコマンドの一部として解釈されます。

行末をunix(\nのみ)に変更する必要があります。 dos2unixこれを行うことができます。

1

スクリプトの行末を修正して、UNIX標準\nを使用してください。残念ながら、\rもあります。シェルがそれらを最後の引数として渡すように見えます。

関連する問題