синтаксическая ошибка рядом с неожиданным токеном `$ 'in \ r' ' - PullRequest
37 голосов
/ 25 июня 2011

Я пытаюсь скомпилировать программное обеспечение для биометрических изображений NIST, и у меня были проблемы в течение всего дня. Я, наконец, правильно проверил исходный код и без проблем установил Cygwin (я использовал его в прошлом), но когда я пошел на компиляцию, я получаю эту ошибку:

 $  sh setup.sh </cygdrive/c/NBIS> [--without-X11]
 setup.sh: line 94: syntax error near unexpected token `$'in\r''
 'etup.sh: line 94: `    case $1 in

Теперь я уверен, что любой продвинутый кодер пойдет на setup.sh и будет искать проблемы, но я не очень-то большой (я только компилирую это, потому что нет предварительно скомпилированных пакетов), поэтому Я не знаю что делать Я не устанавливал никаких библиотек с Cygwin, я просто оставил все по умолчанию. Я пытаюсь следовать руководству NBIS, но я не очень хорошо понимаю его, и поэтому я плохо борюсь. Maybye, взглянув на него, вы можете заметить то, что я пропустил: http://www.nist.gov/customcf/get_pdf.cfm?pub_id=51097

Ответы [ 4 ]

48 голосов
/ 04 мая 2012

Чтобы преобразовать setup.sh в конец строки Unix на Cygwin, используйте

dos2unix setup.sh
30 голосов
/ 29 мая 2016

Выполнить

sed -i 's/\r//' setup.sh

, чтобы исправить окончания строк

14 голосов
/ 13 мая 2015

Простой способ конвертировать файл example.sh в unix - использовать NotePad ++ («Правка»> «Преобразование EOL»> «Формат UNIX / OSX)»

Вы также можете установить EOL по умолчанию в notepad ++ (Настройки> Предпочтения> Новый документ / Каталог по умолчанию> выберите Unix / OSX в поле Формат)

7 голосов
/ 24 августа 2011

Windows использует два символа (CR и LF, или \r\n), чтобы отметить конец строки в текстовом файле. Unix, Linux и (по умолчанию) Cygwin используют один символ LF или '\ n'. Некоторые инструменты Cygwin могут работать с любым форматом, но sh, как правило, не могут.

Похоже, setup.sh использует окончания строк в стиле Windows - или, по крайней мере, строка 94 -.

Я не нашел загрузку для источников, но если они распространяются в виде zip-файла, вам может потребоваться извлечь их с помощью команды Cygwin unzip с параметром -a, поэтому любые окончания строк автоматически конвертируется.

Но я подозреваю, что в этом есть нечто большее. Во-первых, в распределенном файле setup.sh не должно быть окончаний строк в стиле Windows, и если это произойдет, я не знаю, почему проблема не будет отображаться до строки 94.

Если вы можете опубликовать URL для исходной загрузки, я посмотрю на setup.exe.

...