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
Jesse Marks

คำตอบ:


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)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.