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?


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)

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ć.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.