Исправление: синтаксическая ошибка возле неожиданного токена `(& lsquo;

Синтаксическая ошибка сообщения об ошибке рядом с неожиданным токеном `(' возникает в среде типа 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', которая преобразует скрипт в правильный формат, а затем вы можете выполнить его без каких-либо проблем.

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