简单linux脚本
在新服务器上创建isntall solr的自动脚本时遇到问题简单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
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'>>新文件