我在新服务器上创建isntall solr的自动脚本时遇到问题
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
我得到了
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}
似乎是因为我使用换行符来终止命令(好像它是一个Windows bat文件)。如何在单个文件中运行多个命令
答案 0 :(得分:7)
您可能在脚本中使用Windows换行符。使用dos2unix
实用程序将它们转换为Linux换行符:dos2unix your_script.sh
答案 1 :(得分:2)
问题似乎是您的shell脚本具有Windows行结尾(\r\n
)。 Bash只关心\n
,因此\r
被解释为命令的一部分。
您需要将行结尾更改为unix(仅限\n
)。 dos2unix
可以为您做到这一点。
答案 2 :(得分:1)
更正脚本中的行结尾以使用unix标准\n
。不幸的是,你也有\r
,看起来shell将它们作为最后的参数传递。