тот же скрипт bash в командной строке не работает при запуске из файла - PullRequest
1 голос
/ 04 ноября 2010

Я пытаюсь отключить скрипты Bash от cygwin.Когда я вручную набираю следующие строки в командной строке, все работает, и я вижу, что на экране печатаются цифры от 1 до 10.

for i in {1..10}; do
    echo $i;
done

Однако, если я сохраню скрипт в файл.sh) и запустите "./test.sh", мне показали следующие ошибки

./test.sh: line 1: syntax error near unexpected token `$'do\r''
'/test.sh: line 1: `for i in {1..10}; do

Это кажется мне очень странным.мне интересно, как получается, что тот же скрипт отлично работает в командной строке, но не из файла.

Спасибо, Дерек

Ответы [ 3 ]

8 голосов
/ 04 ноября 2010

\r - подсказка. Ваш файл, вероятно, имеет окончания строк CRLF (\r\n), которые интерпретатор bash не обрабатывает изящно. Измените настройки редактора, чтобы использовать окончания строк в стиле Unix (\n), или запустите /usr/bin/dos2unix <file> в своем файле, чтобы сбросить окончания строк.

0 голосов
/ 12 декабря 2016

Я получаю ту же ошибку в Notepad ++. Из этого поста я изменил «Правка» -> «Преобразование EOF», выбрал формат «Unix / OSX» и исправил эту проблему.

0 голосов
/ 06 мая 2016

Другое возможное решение с использованием текстового редактора Unix vi:

открыть файл в редакторе vi с помощью команды vi filename.sh;

введите команду vi :set ff=unix;

сохранить файл с :wq

Это сохранит файл с окончанием строки Unix.

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