bash: kesalahan sintaks dekat token yang tidak terduga `('

18

Saya mencoba mengunduh pengelola unduhan flareget melalui wget, saya mendapat pesan kesalahan

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

Mengapa kesalahan itu datang dan apa solusi untuk itu?

Pengguna Terdaftar
sumber
Saya menerima kesalahan yang sama ketika mencoba membuka ritsleting file yang dilindungi kata sandi. Kata sandi memiliki tanda kurung di dalamnya. Saya akhirnya harus menggunakan tanda kutip ganda dan tunggal untuk menghindari kesalahan. Contoh: mypass="'HWNevtQW9o2s)f'" unzip -P $mypass myfile
Jesse Marks

Jawaban:

22

Anda harus menggunakan tanda kutip tunggal 'atau tanda kutip ganda di "sekitar URL dalam kasus ini (dan secara umum):

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

Mulai sekarang, Anda harus menggunakan metode ini secara umum ketika Anda menggunakan string yang berisi tanda kurung sebagai argumen dalam perintah. Itu karena tanda kurung digunakan untuk pengelompokan oleh shell sedemikian rupa sehingga mereka tidak dikomunikasikan dengan cara apa pun untuk suatu perintah. Jadi, bash shell akan memberi Anda kesalahan sintaks:

$ echo some (parentheses)
bash: syntax error near unexpected token `('
$ echo 'some (parentheses)'
some (parentheses)
Radu Rădeanu
sumber
6

Itu karena kurung. Anda perlu melarikan diri dari mereka seperti ini:

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

Sekarang harusnya berhasil.

kekacauan
sumber