Синтаксическая ошибка сценария Bash "do"?

linux bash shell

638 просмотра

3 ответа

#!/bin/sh
for repo in repoA, repoB, repoC;
do
    echo Cloning $repo.
done

Когда я выполняю this ( sh myscript.sh), я получаю следующее:

myscript.sh: line 2: syntax error near unexpected token `$'\r''
'yscript.sh: line 2: `for repo in repoA repoB repoC;

Идеи?

Автор: IAmYourFaja Источник Размещён: 12.11.2019 09:39

Ответы (3)


3 плюса

Windows использует два символа в конце каждой строки: '\r'и '\n'. Unix просто использует '\n'. Предположительно, вы редактируете это в блокноте и запускаете его в Cygwin, поэтому вы получаете эту ошибку.

Загрузите редактор Notepad ++ , в котором есть опция окончания строки в стиле Unix Edit / EOL Conversion.

Автор: ooga Размещён: 14.07.2014 05:27

0 плюса

Ваш скрипт, вероятно, был написан на машине с Windows и содержит новые строки DOS CR LF вместо Unix, LF

Так что вам просто нужно конвертировать переводы строк.

Вы можете сделать это, используя различные инструменты, но я предпочитаю dos2unix

Чтобы установить его на CentOS, Fedora или RHEL, выполните:

sudo yum install dos2unix 

Чтобы установить dos2unix в Ubuntu или Debian :

sudo apt-get install tofrodos
sudo ln -s /usr/bin/fromdos /usr/bin/dos2unix

Теперь, чтобы сделать преобразование:

dos2unix your_script.sh

Затем запустите скрипт

sh your_script.sh
Автор: Mutuma Размещён: 01.10.2014 11:21

-4 плюса

Вы забыли точку с запятой:

#!/bin/sh
for repo in repoA repoB repoC;
do
    echo Cloning $repo.
done

Обратите внимание, что в этом контексте repoA, repoB и repoC рассматриваются как переменные.

Автор: d33tah Размещён: 14.07.2014 04:49
Вопросы из категории :
32x32