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