bash: erro de sintaxe próximo ao token inesperado `('

bash: erro de sintaxe próximo ao token inesperado `('

Estou tentando baixar o gerenciador de download flareget via wget, recebo um erro

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

Por que esse erro está ocorrendo e qual é a solução para isso?

Responder1

Você deve usar aspas simples 'ou duplas "ao redor do URL neste caso (e em geral):

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

A partir de agora, você deve usar este método em geral ao usar uma string que contém parênteses como argumento em um comando. Isso ocorre porque os parênteses são usados ​​para agrupamento pelo shell, de forma que não sejam comunicados de forma alguma a um comando. Portanto, o shell bash apresentará um erro de sintaxe:

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

Responder2

É por causa dos colchetes. Você precisa escapar deles assim:

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

Agora deve funcionar.

Responder3

O meu não teve nada a ver com colchetes sem escape e tudo a ver com um alias já definido com o mesmo nome da função.

Alias ​​em um arquivo:

alias foo="echo do something"

Função em outra:

foo() {
    # Do something else
}

Ambos os arquivos foram originados por meu ~/.bashrc, me dando uma mensagem de erro inútil:

syntax error near unexpected token (

informação relacionada