繁体   English   中英

简单的 linux 脚本

[英]simple linux script

我在创建自动脚本以在新服务器上安装 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 your_script.sh

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

您需要将行尾更改为 unix (仅限\n )。 dos2unix可以为您做到这一点。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM