Синтаксическая ошибка неожиданный конец файла bash

Обновлено: 04.07.2024

Простите, что это очень простой script в Bash. Здесь код:

после запуска sh file.sh:

Синтаксическая ошибка: неожиданный конец файла

ОТВЕТЫ

Ответ 1

Я думаю, файл file.sh с терминаторами линии CRLF.

тогда проблема будет исправлена.

Вы можете установить dos2unix в ubuntu следующим образом:

Ответ 2

Еще одна вещь, которую нужно проверить (только что произошло со мной):

  • завершать тела однострочных функций с точкой с запятой

т.е. этот невинно выглядящий фрагмент вызовет ту же ошибку:

Чтобы сделать немой синтаксический анализатор счастливым:

Ответ 3

  • else if (синтаксическая ошибка: неожиданный конец файла)
  • elif (правильный синтаксис)

i отлаживает его, комментируя биты до тех пор, пока не сработает

Ответ 4

неблокированное предложение if = > fi также поднимет это значение

tip: используйте trap для отладки, если ваш script огромен.

например. set -x trap read debug .

Ответ 5

на cygwin Мне нужно: -

в .bash_profile. Таким образом, мне не нужно было запускать unix2dos

Ответ 6

Откройте файл в Vim и попробуйте

Преобразуйте окончания строки eh в окончание unix и посмотрите, разрешает ли это вопрос. Если вы редактируете в Vim, введите команду: set fileformat = unix и сохраните файл. Несколько других редакторов имеют возможность конвертировать строку таких как Notepad ++ или Atom

Ответ 7

Итак, я нашел этот пост, и ответы не помогли мне, но я смог понять, почему он дал мне ошибку. У меня был

Проблема заключалась в том, что я скопировал вышеуказанный код, чтобы быть в функции, и непреднамеренно закрепил код. Необходимо убедиться, что последний EOF не включен.

Ответ 8

Мне удалось вырезать и вставить ваш код в файл, и он работал правильно. если ты выполните его следующим образом:

Ваш файл "file.sh":

Обратите внимание, что "file.sh" должен быть выполнен:

Вы можете получить эту ошибку b/c от того, как вы делаете ввод (с трубой, морковью, и т.д.). Вы также можете попробовать расщепить условие на два:

Или, поскольку вы используете bash , вы можете использовать встроенный синтаксис:

И, наконец, вы могли бы, конечно, просто проверить, были ли предоставлены 3 аргумента (чистые, поддерживает совместимость оболочки POSIX):

Ответ 9

У меня была проблема, когда я писал "if - fi" в одной строке:

Написать многострочно решил мою проблему:

Ответ 10

Я просто вырезал и ввел ваш пример в файл; он работал нормально под bash. Я не вижу никаких проблем с этим.

Для хорошей меры вы можете убедиться, что она заканчивается символом новой строки, хотя bash не волнует. (Он работает для меня как с окончанием новой строки, так и без нее.)

Иногда вы видите странные ошибки, если случайно ввели в файл управляющий символ. Поскольку это короткий script, попробуйте создать новый script, вставив его из вашего вопроса здесь в StackOverflow или просто повторно набрав его.

Какую версию bash вы используете? ( bash --version )

Ответ 11

Убедитесь, что имя каталога, в котором присутствует файл .sh, не имеет пробела. например: Скажите, находится ли она в папке "Новая папка", вы обязательно столкнетесь с приведенной вами ошибкой. Вместо этого просто назовите его "New_Folder". Надеюсь, это поможет.

Ответ 12

Ответ 13

Затем File -> Save as и установите end line в Unix/Linux

Ответ 14

Я знаю, что я слишком поздно на вечеринку. Надеюсь, что это может кому-то помочь.

Проверьте ваш файл .bashrc. Возможно переименуйте или переместите это.

Ответ 15

Это происходило со мной, когда я пытался вызвать функцию с помощью паренов, например

Ответ 16

Для окон:

В моем случае я работал в ОС Windows, и я получил ту же ошибку при запуске autoconf.

    Я просто открываю файл configure.ac с помощью своей NOTEPAD++ IDE.

Затем я преобразовал Файл с преобразованием EOL в Windows (CR LF) следующим образом:

РЕДАКТИРОВАТЬ → EOL CONVERSION → ОКНА (CR LF)

Ответ 17

Для людей, использующих MacOS:

Если вы получили файл в формате Windows и хотите запустить на MacOS и видите эту ошибку, выполните эти команды.

Хотите улучшить этот вопрос? Добавьте детали и проясните проблему, отредактировав этот пост .

Закрыто 4 года назад .

Я пытаюсь создать приложение spritz. Все работало нормально, но со вчерашнего дня я продолжаю получать эту ошибку:

./spritz: строка 176: синтаксическая ошибка: неожиданный конец файла

Я проверил файл сценария, и все кажется идеальным. Я запутался, у меня наконец-то есть утверждение if, и оно выглядит правильно! Вот последняя часть:

Что может вызвать эту ошибку?

(0) Возможно, было бы более полезно показать нам разницу с последней версией, которая сработала. . . . . . . . . Некоторые наблюдения (что , вероятно , не связана с вашим текущим, конкретной проблемой): (1) Я не знаю ни одного обстоятельства , когда вам нужно неэкранированные ; (точка с запятой) в конце строки , Вы можете удалить точки с запятой в концах строк 157, 161, 165, 168 и 169. (Или вы можете оставить их; я думаю, это вопрос стиля.)… (Продолжение) (Продолжение)… (2) Вы должны всегда заключать в кавычки переменные оболочки, если у вас нет веских причин не делать этого и вы уверены, что знаете, что делаете; например, "$1" , "$2" , "$SECONDS" и "$starttime" . (3) Проще читать и отлаживать код с отступом. (4) Почему вы настраиваете, FS а затем не используете его? (5) `…` может быть написано $(…) . (6) $(($SECONDS - $starttime)) может быть эквивалентно написано $((SECONDS - starttime)) . Опять же, это в основном вопрос стиля. (7) Почему вы печатаете "$words_read" в цикле, если вы не изменяете его в цикле? (Продолжение)… Как только ошибка исчезнет, ​​поместите последние строки, которые вы удалили, обратно, и начните сворачивать их. Например, если удаление строк 157-174 действительно устраняет ошибку, вставьте их обратно, но затем удалите строки 159-160, 163-168 и 171-172. Попробуйте заменить на `grep …` список значений. Другими словами, используйте процесс устранения. Замечания к нескольким комментариям Скотта: (объявление 2), если вы уверены, что делаете, то (в размещенном коде) "$1" нужно только цитировать, (объявление 4), вероятно, он имел в виду IFS (а не FS )?

Диагностический «неожиданный конец файла» - это подсказка о том, что у вас есть какая-то несоответствующая или не определенная открывающая синтаксическая конструкция ( if без fi , do без done , открывающие скобки без соответствующей закрывающей, открывающие, но не определенные кавычки и т. Д.). Номер строки, указывающий на конец скрипта, в этом случае не полезен, кроме как для проверки ваших синтаксических конструкций; ошибка может быть где угодно в вашем коде. Вы должны это проверить.

Простите меня за это очень простой скрипт в Bash. Вот код:

после запуска sh file.sh:

ошибка синтаксиса: неожиданный конец файла

Я думаю, file.sh с возврата каретки и перевода строки конец строки.

run

затем проблема будет исправлена.

вы можете установить dos2unix в ubuntu с этим:

  • завершите тела однострочных функций точкой с запятой
  • else if (синтаксическая ошибка: неожиданный конец файла)
  • elif (правильный синтаксис)

ООН-закрытые, если => предложения Fi будет также поднимать этот

совет: используйте ловушки для отладки, если ваш скрипт огромен.

например set -x trap read debug .

на cygwin мне нужно: -

in .файл . Таким образом, мне не нужно было запускать unix2dos

Так что я нашел этот пост и ответы не помогли мне, но я смог выяснить, почему он дал мне ошибку. У меня был

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

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

ваш "file.sh":

команды:

обратите внимание, что "file.sh" должен быть исполняемым:

возможно, вы получаете эту ошибку b / c того, как вы делаете ввод (с трубой, морковью, так далее.). Вы также можете попробовать разделить условие на два:

или, так как вы используете bash , вы может использовать встроенный синтаксис:

и, наконец, вы могли бы, конечно, просто проверить, если 3 аргумента были даны (чистый, поддерживает совместимость оболочки POSIX):

Я получил этот ответ от это аналогичная проблема на StackOverflow

откройте файл в Vim и попробуйте

:set fileformat=unix

преобразование EH окончаний строк в Unix окончаний и посмотреть, если это решает вопрос. При редактировании в Vim введите команду: set fileformat=unix и сохранить файл. Несколько других редакторов имеют возможность конвертировать строки окончания, такие как Notepad++ или Atom

Я просто вырезал и вставил ваш пример в файл; он отлично работал под bash. Я не вижу никаких проблем с этим.

для хорошей меры вы можете убедиться, что он заканчивается новой строкой, хотя bash не должен беспокоиться. (Это работает для меня, так и без итоговой строки.)

вы иногда будете видеть странные ошибки, если вы случайно встроили управляющий символ в файл. Поскольку это короткий скрипт, попробуйте создать новый скрипт, вставив его из вашего вопроса здесь StackOverflow, или просто перепечатав его.

какую версию bash вы используете? ( bash --version )

удачи!

убедитесь, что имя каталога, в котором находится файл .sh, не содержит пробелов. например: скажем, если он находится в папке под названием "Новая папка", вы обязательно столкнетесь с ошибкой, которую вы процитировали. Вместо этого просто назовите его как "New_Folder". Надеюсь, это поможет.

В Ubuntu:

затем, File -> Save as и set end line до Unix/Linux

у меня была проблема, когда я написал заявление "if-fi" в одной строке:

if [ -f

Добрый вечер! пытаюсь написать скрипт на bash чтобы определял количество слов начинающихся на заданную букву. Реализовала ввод слов в массив word и попробовала чтобы вывел все слова массива. Программа отрабатывает но слова не выводятся. Выводит ошибку про неожиданный конец файла

Может есть и другие ошибки но я не вижу их, убунту ругается только на конец файла. Подскажите пожалуйста, в чем может быть дело? __________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Ошибка: неожиданный конец файла
Помогите чайнику, будьте добы Выводится синтаксичекая ошибка: неожиданный конец файла. Что я.

Ошибка CS1525: неожиданный символ 'конец файла'
using System; using System.Drawing.Drawing2D; using System.Drawing; using System.IO; using.

неожиданный конец файла
Здравствуйте. Есть код, на который система выдает ошибку неожиданного конца файла в 85 строке.


Неожиданный конец файла
Приветствую, у меня такая проблема: пишу шифратор по лабораторным на с++, нужно сначала зашифровать.

Решение

greg zakharov, серьёзно? это всё?! а я тут с бубном скачу! спасибо огромное!

Добавлено через 22 минуты
greg zakharov, а цикл нужен чтобы посчитать количество слов именно на эту букву

Неожиданный конец файла
Помогите найти ошибку. Вроде бы, всё правильно, но, тем не менее, получаю неожиданный конец фала с.

Неожиданный конец файла
Не выводятся данные, хотя на другом сервере выводились. выводит и указывает на последнюю.


Ошибка синтаксиса около неожиданный лексемы ")"
Господа, gcc в данном коде ругается на "ошибку синтаксиса около неожиданный лексемы )". Что это.

Неожиданный конец
Помогите с кодом, в конце выдает вот такую ошибку: Parse error: syntax error, unexpected end of.

Ошибка 10: Непредвиденный конец файла
Помогите пожалуйста найти ошибку. Программа для нахождения корня методом итераций. program.

Простите, что это очень простой script в Bash. Здесь код:

после запуска sh file.sh:

Синтаксическая ошибка: неожиданный конец файла

Я думаю, файл file.sh с терминаторами линии CRLF.

тогда проблема будет исправлена.

Вы можете установить dos2unix в ubuntu следующим образом:

Еще одна вещь, которую нужно проверить (только что произошло со мной):

  • завершать тела однострочных функций с точкой с запятой

т.е. этот невинно выглядящий фрагмент вызовет ту же ошибку:

Чтобы сделать немой синтаксический анализатор счастливым:

  • else if (синтаксическая ошибка: неожиданный конец файла)
  • elif (правильный синтаксис)

i отлаживает его, комментируя биты до тех пор, пока не сработает

неблокированное предложение if = > fi также поднимет это значение

tip: используйте trap для отладки, если ваш script огромен.

например. set -x trap read debug .

на cygwin Мне нужно: -

в .bash_profile. Таким образом, мне не нужно было запускать unix2dos

Откройте файл в Vim и попробуйте

Преобразуйте окончания строки eh в окончание unix и посмотрите, разрешает ли это вопрос. Если вы редактируете в Vim, введите команду: set fileformat = unix и сохраните файл. Несколько других редакторов имеют возможность конвертировать строку таких как Notepad ++ или Atom

Итак, я нашел этот пост, и ответы не помогли мне, но я смог понять, почему он дал мне ошибку. У меня был

Проблема заключалась в том, что я скопировал вышеуказанный код, чтобы быть в функции, и непреднамеренно закрепил код. Необходимо убедиться, что последний EOF не включен.

Мне удалось вырезать и вставить ваш код в файл, и он работал правильно. если ты выполните его следующим образом:

Ваш файл "file.sh":

Обратите внимание, что "file.sh" должен быть выполнен:

Вы можете получить эту ошибку b/c от того, как вы делаете ввод (с трубой, морковью, и т.д.). Вы также можете попробовать расщепить условие на два:

Или, поскольку вы используете bash , вы можете использовать встроенный синтаксис:

И, наконец, вы могли бы, конечно, просто проверить, были ли предоставлены 3 аргумента (чистые, поддерживает совместимость оболочки POSIX):

У меня была проблема, когда я писал "if - fi" в одной строке:

Написать многострочно решил мою проблему:

Я просто вырезал и ввел ваш пример в файл; он работал нормально под bash. Я не вижу никаких проблем с этим.

Для хорошей меры вы можете убедиться, что она заканчивается символом новой строки, хотя bash не волнует. (Он работает для меня как с окончанием новой строки, так и без нее.)

Иногда вы видите странные ошибки, если случайно ввели в файл управляющий символ. Поскольку это короткий script, попробуйте создать новый script, вставив его из вашего вопроса здесь в StackOverflow или просто повторно набрав его.

Какую версию bash вы используете? ( bash --version )

Убедитесь, что имя каталога, в котором присутствует файл .sh, не имеет пробела. например: Скажите, находится ли она в папке "Новая папка", вы обязательно столкнетесь с приведенной вами ошибкой. Вместо этого просто назовите его "New_Folder". Надеюсь, это поможет.

Читайте также: