简单linux脚本

简单linux脚本,linux,shell,Linux,Shell,在新服务器上创建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.x

在新服务器上创建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文件一样)。如何在单个文件中运行多个命令

脚本中可能使用了Windows换行符。使用
dos2unix
实用程序将它们转换为Linux换行符:
dos2unix\u脚本。sh

您可能在脚本中使用了Windows换行符。使用
dos2unix
实用程序将它们转换为Linux换行符:
dos2unix\u script.sh

问题似乎是您的shell脚本有windows换行符(
\r\n
)。Bash只关心
\n
,因此
\r
被解释为命令的一部分


您需要将行尾更改为unix(
\n
仅限)
dos2unix
可以为您执行此操作。

问题似乎是您的shell脚本有windows行结尾(
\r\n
)。Bash只关心
\n
,因此
\r
被解释为命令的一部分


您需要将行尾更改为unix(
\n
仅限)
dos2unix
可以为您执行此操作。

请更正脚本中的行尾,以使用unix标准
\n
。不幸的是,您也有
\r
s,看起来shell将它们作为最后一个参数传递。

请更正脚本中的行尾,以使用unix标准
\n
。不幸的是,您也有
\r
s,看起来shell将它们作为最后一个参数传递。

或者对于dos2unix,我使用了cat oldfild | tr'\n\r'>>新文件,或者对于dos2unix,我使用了cat oldfild | tr'\n\n'>>新文件