почему мой сценарий оболочки установки не работает, когда я могу запускать его по строкам, и он работает?

Я могу запустить эту строку за строкой на новом экземпляре ubuntu 16.04 в Digital Ocean, но когда я даю ему исполняемые разрешения chmod +x и запускаю его, я получаю неудачные попытки запуска разных частей скрипта.

sudo apt-get -y install nginx git libcurl4-gnutls-dev libxml2-dev libssl-dev sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 sudo add-apt-repository 'deb [arch=amd64,i386] https://cran.rstudio.com/bin/linux/ubuntu xenial/' sudo apt-get update sudo apt-get install r-base r-base-dev gdebi-core sudo su - -c "R -e \"install.packages('devtools', repos='http://cran.us.r-project.org')\"" sudo su - -c "R -e \"install.packages('shiny', repos='http://cran.us.r-project.org')\"" sudo su - -c "R -e \"install.packages('XML', repos='http://cran.us.r-project.org')\"" (crontab -l 2>/dev/null; echo "5 0 * * * Rscript /root/transit-tracker/scripts_in_testing/download_gtfs.R ") | crontab - (crontab -l 2>/dev/null; echo "* * * * * Rscript /root/transit-tracker/scripts_in_testing/get_tidy_gps.R ") | crontab - wget https://download3.rstudio.org/ubuntu-12.04/x86_64/shiny-server-1.5.3.838-amd64.deb sudo gdebi -n shiny-server-1.5.3.838-amd64.deb sudo sed -i 's/ listen 3838;/ listen 80;/' /etc/shiny-server/shiny-server.conf # then reboot

В ответ я получаю:

Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package Executing: /tmp/tmp.EeBdzAP95F/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 " not a key ID: skipping57CBB651716619E084DAB9 E: Invalid operation update Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package r-base E: Unable to locate package r-base-dev E: Unable to locate package gdebi-core -su: R: command not found -su: R: command not found -su: R: command not found -su: R: command not found -su: R: command not found 'rontab: invalid option -- ' crontab: usage error: unrecognized option usage: crontab [-u user] file crontab [ -u user ] [ -i ] { -e | -l | -r } (default operation is replace, per 1003.2) -e (edit user's crontab) -l (list user's crontab) -r (delete user's crontab) -i (prompt before deleting user's crontab) 'rontab: invalid option -- ' crontab: usage error: unrecognized option usage: crontab [-u user] file crontab [ -u user ] [ -i ] { -e | -l | -r } (default operation is replace, per 1003.2) -e (edit user's crontab) -l (list user's crontab) -r (delete user's crontab) -i (prompt before deleting user's crontab) --2017-05-08 22:39:38-- https://download3.rstudio.org/ubuntu-12.04/x86_64/shiny-server-1.5.3.838-amd64.deb%0D Resolving download3.rstudio.org (download3.rstudio.org)... 52.85.90.213, 52.85.90.39, 52.85.90.98, ... Connecting to download3.rstudio.org (download3.rstudio.org)|52.85.90.213|:443... connected. HTTP request sent, awaiting response... 404 Not Found 2017-05-08 22:39:38 ERROR 404: Not Found. sudo: gdebi: command not found : No such file or directoryserver/shiny-server.conf
0
задан 9 May 2017 в 02:13

3 ответа

Как вы подтвердили в комментариях, ваш скрипт был написан в системе Windows и содержит окончание строк в стиле Windows (CR + LF) вместо Unix-стиля (LF), что было бы необходимо.

Чтобы легко преобразовать окончания строк текстовых файлов между DOS / Windows и стилем Unix, установите пакет с именем dos2unix:

sudo apt install dos2unix

Он поставляется с двумя командами dos2unix для преобразования Windows текстовый файл в формат Unix и unix2dos для преобразования текстового файла Unix в формат Windows.

В вашем случае просто запустите

dos2unix FILENAME

, заменив FILENAME на ваш фактический имя файла сценария, и после этого он должен работать нормально.

2
ответ дан 22 May 2018 в 22:47

Как вы подтвердили в комментариях, ваш скрипт был написан в системе Windows и содержит окончание строк в стиле Windows (CR + LF) вместо Unix-стиля (LF), что было бы необходимо.

Чтобы легко преобразовать окончания строк текстовых файлов между DOS / Windows и стилем Unix, установите пакет с именем dos2unix:

sudo apt install dos2unix

Он поставляется с двумя командами dos2unix для преобразования Windows текстовый файл в формат Unix и unix2dos для преобразования текстового файла Unix в формат Windows.

В вашем случае просто запустите

dos2unix FILENAME

, заменив FILENAME на ваш фактический имя файла сценария, и после этого он должен работать нормально.

2
ответ дан 18 July 2018 в 13:36

Как вы подтвердили в комментариях, ваш скрипт был написан в системе Windows и содержит окончание строк в стиле Windows (CR + LF) вместо Unix-стиля (LF), что было бы необходимо.

Чтобы легко преобразовать окончания строк текстовых файлов между DOS / Windows и стилем Unix, установите пакет с именем dos2unix:

sudo apt install dos2unix

Он поставляется с двумя командами dos2unix для преобразования Windows текстовый файл в формат Unix и unix2dos для преобразования текстового файла Unix в формат Windows.

В вашем случае просто запустите

dos2unix FILENAME

, заменив FILENAME на ваш фактический имя файла сценария, и после этого он должен работать нормально.

2
ответ дан 24 July 2018 в 20:13

Другие вопросы по тегам:

Похожие вопросы: