bash: синтаксическая ошибка рядом с неожиданным токеном `('

18

Я пытаюсь скачать менеджер загрузок 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 `('

Почему появляется эта ошибка и каково ее решение?

зарегистрированный пользователь
источник
Я получил ту же ошибку при попытке распаковать файл, который был защищен паролем. Пароль содержал круглую скобку. Мне пришлось использовать как двойные, так и одинарные кавычки, чтобы избежать ошибки. Пример: mypass="'HWNevtQW9o2s)f'" unzip -P $mypass myfile
Джесси Маркс

Ответы:

22

В этом случае вы должны использовать одинарные 'или двойные кавычки "вокруг 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)
Раду Рэдяну
источник
6

Это из-за скобок. Вы должны избежать их так:

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

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

хаос
источник