Устранение неполадок в Windows

Исправление: Syntax Error near unexpected token `(‘

Сообщение об ошибке ошибка синтаксиса вблизи неожиданной лексемы `(‘ происходит в среде типа Unix, Cygwin, и в интерфейсе командной строки в Windows. Эта ошибка, скорее всего, возникает при попытке запустить сценарий оболочки, который был отредактирован или создан в старых системах DOS/Windows или Mac.

Синтаксическая ошибка вблизи неожиданной лексемы `('
Syntax Error near unexpected token `(‘

Это сообщение об ошибке также появляется, когда вы вводите команды в командной строке Linux для выполнения повседневных задач, таких как копирование файлов вручную и т.д. Основными причинами появления данного сообщения об ошибке являются либо неправильный синтаксис, либо проблемы ОС с интерпретацией команд/оболочки другой системы.

Что вызывает синтаксическую ошибку возле неожиданной лексемы `(‘?

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

  • Плохой синтаксис при выполнении любой команды на любой из платформ. Либо вы неправильно используете команду, либо ввели неверный синтаксис.
  • Оболочка не работает совместимый между системами Unix/DOS.
  • Существуют проблемы с запуском сценария оболочки bash из другой источник.

В этой статье мы предполагаем, что вы знаете основы кодирования и имеете представление о том, что вы делаете. Если вы новичок, лучше всего изучить подробные учебники по языку/команде, которую вы пытаетесь выполнить. Вероятно, вы допустили ошибку в каком-либо синтаксисе.

Решение 1: Проверка синтаксиса и формата команд

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

Кроме того, следует проявлять особую осторожность при лишний пробел, использование двойные кавычки, и обязательный параметры обязательны. Если какие-либо из них отсутствуют или объявлены неверно, то выполнить код будет невозможно.

Например, вместо следующего кода

[mycom7] # ./ctopo.sh um_test1 [(1,2),(2,1)]

Необходимо выполнить в виде

[mycom7] # ./ctopo.sh um_test1 "[(1,2),(2,1)]"

Также убедитесь в правильности выполнения команд/шелл-скрипта, если он занимает несколько строк.

В связи с типом параметра двойные кавычки необходимы. Лишний пробел также может испортить ваш код и привести к появлению сообщения об ошибке. Обязательно проверьте официальная документация выполняемой команды и посмотрите, нет ли там проблемы.

Решение 2: Устранение неполадок в сценарии оболочки

Если вы используете сценарий оболочки, который работает в исходной системе, но возвращает ошибку в целевой, вы можете устранить неполадки в сценарии, проверив переменные, которые сохраняются во время выполнения, а затем посмотреть, что является причиной проблемы. Это очень распространенная причина, поскольку в некоторых случаях оболочка пытается интерпретировать непечатаемый символ.

Попробуйте запустить оболочку с параметром ‘vx’. Это покажет нам, какие команды выполняются и какие значения хранятся в скрипте. Здесь вы можете устранить неполадки и диагностировать, что именно происходит не так.

Например, выполните скрипт в терминале после включения в него команды ‘vx’ as:

# sh -vx ./test_script5.sh

Проверить содержимое скрипта можно с помощью команды ‘cat’:

# cat test_script5.sh

Решение 3: Использование команды ‘dos2unix.команда exe’

В текстовых файлах Windows/DOS новая строка представляет собой комбинацию из возврата каретки (\r) и перевода строки (\n). В Mac (до Mac OS X) для перевода строки использовался простой символ возврата каретки (\r). В Unix/Linux и Mac OS X используются символы перевода строки (\n). Если вы используете Cygwin, то он не сможет обработать скрипты, созданные в DOS/Windows и старых версиях Mac, из-за лишнего символа Carriage Return (\r).

Используя команду 'dos2unix.exe'
Использование ‘dos2unix.exe’ команда

Здесь можно использовать команду ‘dos2unix.exe’, которая преобразует скрипт в правильный формат, после чего его можно будет выполнить без каких-либо проблем.

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

Добавить комментарий