bash: błąd składni w pobliżu nieoczekiwanego tokena `('

18

Próbuję pobrać menedżera pobierania flareget za pomocą wget. Wystąpił błąd

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

Dlaczego ten błąd nadchodzi i jakie jest na to rozwiązanie?

zarejestrowany użytkownik
źródło
Ten sam błąd wystąpił podczas próby rozpakowania pliku chronionego hasłem. Hasło zawierało nawias. Skończyło się na tym, że musiałem używać zarówno podwójnych, jak i pojedynczych cudzysłowów, aby uniknąć błędu. Przykład: mypass="'HWNevtQW9o2s)f'" unzip -P $mypass myfile
Jesse Marks

Odpowiedzi:

22

W tym przypadku (i ogólnie) należy użyć pojedynczych cudzysłowów 'lub podwójnych cudzysłowów "wokół adresu URL:

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

Odtąd powinieneś używać tej metody ogólnie, gdy używasz łańcucha zawierającego nawiasy jako argument w poleceniu. Wynika to z tego, że nawiasy są używane do grupowania przez powłokę w taki sposób, że nie są w żaden sposób przekazywane do polecenia. Więc powłoka bash da ci błąd składniowy:

$ echo some (parentheses)
bash: syntax error near unexpected token `('
$ echo 'some (parentheses)'
some (parentheses)
Radu Rădeanu
źródło
6

To z powodu nawiasów. Musisz uciec przed nimi w ten sposób:

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

Teraz powinno działać.

chaos
źródło