bash: синтаксическая ошибка около неожиданного токена `('

bash: синтаксическая ошибка около неожиданного токена `('

Я пытаюсь загрузить менеджер загрузок Flareget через wget, но получаю ошибку

wget  http://www.flareget.com/files/flareget/debs/amd64/flareget_2.3-24_amd64(stable)_deb.tar.gz
bash: syntax error near unexpected token `('

Почему возникает эта ошибка и как ее устранить?

решение1

В этом случае (и вообще) следует использовать одинарные 'или двойные кавычки вокруг URL-адреса:"

wget  'http://www.flareget.com/files/flareget/debs/amd64/flareget_2.3-24_amd64(stable)_deb.tar.gz'

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

$ echo some (parentheses)
bash: syntax error near unexpected token `('
$ echo 'some (parentheses)'
some (parentheses)

решение2

Это из-за скобок. Их нужно экранировать так:

wget  http://www.flareget.com/files/flareget/debs/amd64/flareget_2.3-24_amd64\(stable\)_deb.tar.gz

Теперь должно работать.

решение3

Моя ошибка не имела ничего общего с неэкранированными скобками, а была связана с уже определенным псевдонимом с тем же именем, что и у функции.

Псевдоним в одном файле:

alias foo="echo do something"

Функция в другом:

foo() {
    # Do something else
}

Оба этих файла были получены из моего источника ~/.bashrc, что привело к появлению бесполезного сообщения об ошибке:

syntax error near unexpected token (

Связанный контент