Bash syntax error near unexpected token что это

от admin

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

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

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

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

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

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

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

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

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

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

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

Вам нужно выполнить его как

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

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

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

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

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

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

Вы можете проверить содержимое скрипта, используя команду cat как:

Решение 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’, которая преобразует скрипт в правильный формат, а затем вы можете выполнить его без каких-либо проблем.

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

bash: syntax error near unexpected token `('

Why is that error coming and what is the solution for that?

3 Answers 3

You should use single quotes ‘ or double quotes » around the URL in this case (and in general):

From now, you should use this method in general when you use a string which contain parentheses as argument in a command. That is because parentheses are used for grouping by the shell such that they are not communicated in any way to a command. So, the bash shell will give you a syntax error:

bash: syntax error near unexpected token `>'

What is the correct format? I tried several with no luck.

Gilles 'SO- stop being evil''s user avatar

4 Answers 4

[ is just another character, according to bash; it’s not self-delimiting. So you need to put spaces around [ and ] . Although you’d be better off using [[ and ]] .

Читать:
Сколько ампер для зарядки телефона

And the command following if (yes, [ is a command) must be terminated with a ; or a newline.

Finally, == (which is not posix, FWIW; posix prefers = ) is string equality, not numeric equality.

So you might have meant:

But you could use arithmetic evaluation instead:

(In arithmetic evalution, equality is == , and you don’t need $ before variable names. I know it’s confusing.)

For more information about [ : help test . About [[ : help [[ (which builds on test ). About (( : help let . About bash : man bash

Summary

Full answer

The error reported by bash: -bash: syntax error near unexpected token `>’ is an attempt to guide the code writer to the error, but bash can easily get it wrong and signal an error where it isn’t.

Actually, there are several errors in the code. But let’s reproduce the error that bash reports in a simpler code line:

If the line changes a little, the error is reported at about the same place but a little different:

And, this also report an error:

All of that happens because the syntax required (copied from the manual) is:

where list is one or several simple commands (or pipes, or compound commands) that end in a newline or a semicolon. Note that, in general, a newline could be replaced with a semicolon and viceversa.

This is valid (no syntax error reported)

This is also valid:

Or other variations of newlines and/or semicolons.

Of course, the last semicolon is not required but not forbidden.

Additionally, the [ and ] require (usually) spaces to be differentiated by bash as words (tokens) and therefore be understood as a test

But, also, a variable expansion should be quoted ( «$a» ), the == is valid in bash, but it may be invalid in some other shells, so we rather should use a = inside single [ ] , the ‘yes’ technically doesn’t need to be quoted (even if it is no harmful), and the braces < >are not needed for a single simple command, all that makes this a better version:

Or, if you choose to use bash/ksh/zsh [[ ]] :

And, lastly, the test with either = or == is a string comparison, not numerical, so +1 would not be equal to 1 even if they are in value. To test numerically, you could use -eq .

Solve Syntax Error Near Unexpected Token in Bash

Solve Syntax Error Near Unexpected Token in Bash

Writing code with Bash scripting, escape sequences or quotation marks may cause errors. This article will explain how to solve the bash: syntax error near unexpected token error in Linux Bash.

There are many code-related reasons for getting a syntax error near unexpected token in Bash scripting. We will explain the most common mistakes and ways to fix them.

Fix Syntax and Formatted Strings to Solve bash: syntax error near unexpected token Error in Bash

If you are getting this error, you most likely made a syntax error. First, read the file’s contents with the cat command.

Note the use of single-quote and double-quote characters.

If you are using escape characters, you must use double quotes. Single quotes do not allow these characters.

For example, the following code will throw the syntax error near unexpected token ‘(‘ error.

However, if you write the same code with double quotes, you can use escape characters. The code below will work without errors.

Also, another way to do this is to add the $ at the beginning of the string. In this way, strings in the form of $’string’ are treated specially.

Backslash escape sequences are decoded as specified by the ANSI C standard.

Use the dos2unix Command to Solve bash: syntax error near unexpected token Error in Bash

Unix operating systems use line feed ( «\n» ) as the end of the line, but Windows operating systems use carriage return and line feed ( «\r\n» ). So if you want to execute a code written in Windows with Cygwin, you may get this error.

You must clear the carriage return characters to execute the file.

The dos2unix command-line tool is a DOS to Unix text file format converter and vice versa. You can use this tool to make your file Unix compatible.

Its usage is as follows.

The file will be converted to Unix format. You can now execute the file.

Yahya Irmak has experience in full stack technologies such as Java, Spring Boot, JavaScript, CSS, HTML.

Похожие статьи