Синтаксическая ошибка Bash: неожиданный конец файла - PullRequest
80 голосов
/ 16 июня 2011

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

#!/bin/bash
# june 2011

if [ $# -lt 3 -o $# -gt 3 ]; then
   echo "Error... Usage: $0 host database username"
   exit 0
fi

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

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

Ответы [ 17 ]

0 голосов
/ 19 апреля 2019

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

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

Обсуждение здесь: Невозможно найти простой скрипт bash

0 голосов
/ 13 марта 2018

В Ubuntu:

$ gedit ~/.profile

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

0 голосов
/ 16 июня 2011

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

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

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

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

Удачи!

0 голосов
/ 03 февраля 2016

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

0 голосов
/ 20 июня 2019

для окон:

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

  • Я просто открываю файл configure.ac с помощью NOTEPAD ++ IDE.
  • Затем я преобразовал файл с EOL преобразованием в Windows (CR LF) следующим образом:

    РЕДАКТИРОВАТЬ -> EOL CONVERSION -> WINDOWS (CR LF)

0 голосов
/ 19 июля 2019

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

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

brew install dos2unix
sh <file.sh>
0 голосов
/ 21 сентября 2016

Очевидно, что некоторые версии оболочки также могут выдавать это сообщение, когда в последней строке вашего скрипта отсутствует символ новой строки.

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