простой скрипт Linux - PullRequest
1 голос
/ 21 июля 2011

У меня проблемы с созданием автоматического скрипта для 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). Как запустить несколько команд в одном файле

Ответы [ 3 ]

7 голосов
/ 21 июля 2011

Возможно, вы используете разрывы строк Windows в вашем скрипте. Преобразуйте их в разрывы строк в Linux с помощью утилиты dos2unix: dos2unix your_script.sh

2 голосов
/ 21 июля 2011

Похоже, проблема в том, что ваш сценарий оболочки имеет окончание строки Windows (\r\n). Bash заботится только о \n, поэтому \r интерпретируется как часть команды.

Вам нужно изменить окончание строки на unix (только \n). dos2unix может сделать это за вас.

1 голос
/ 21 июля 2011

Исправьте окончания строк в вашем скрипте, чтобы использовать стандарт Unix \n. К сожалению, у вас также есть \r s, и похоже, что оболочка передает их в качестве последних аргументов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...