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

Тепер це має працювати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.