Исправлено: синтаксическая ошибка рядом с неожиданным токеном `(‘



Попробуйте наш инструмент устранения неполадок

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



Синтаксическая ошибка возле неожиданного токена `(

Синтаксическая ошибка возле неожиданного токена `(‘



Это сообщение об ошибке также появляется, когда вы вводите команды в командной строке 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» как:

# 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, из-за дополнительного символа возврата каретки ( r).

С помощью

Использование команды 'dos2unix.exe'

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

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

3 минуты на чтение