Computer >> คอมพิวเตอร์ >  >> การแก้ไขปัญหา >> ข้อผิดพลาดของ Windows

แก้ไข:ข้อผิดพลาดทางไวยากรณ์ใกล้กับโทเค็นที่ไม่คาดคิด `('

ข้อความแสดงข้อผิดพลาด ข้อผิดพลาดทางไวยากรณ์ใกล้กับโทเค็นที่ไม่คาดคิด `(' เกิดขึ้นในสภาพแวดล้อมประเภท Unix, Cygwin และในอินเทอร์เฟซบรรทัดคำสั่งใน Windows ข้อผิดพลาดนี้มักเกิดขึ้นเมื่อคุณพยายามเรียกใช้เชลล์สคริปต์ที่แก้ไขหรือสร้างขึ้นในระบบ DOS/Windows หรือ Mac รุ่นเก่า

แก้ไข:ข้อผิดพลาดทางไวยากรณ์ใกล้กับโทเค็นที่ไม่คาดคิด `(

ข้อความแสดงข้อผิดพลาดนี้ยังปรากฏขึ้นเมื่อคุณป้อนคำสั่งในบรรทัดคำสั่ง Linux สำหรับงานประจำวัน เช่น การคัดลอกไฟล์ด้วยตนเอง เป็นต้น สาเหตุหลักที่ข้อความแสดงข้อผิดพลาดนี้เกิดขึ้นอาจเป็นเพราะไวยากรณ์ไม่ถูกต้อง หรือปัญหาของระบบปฏิบัติการในการตีความคำสั่ง/ระบบอื่น เปลือก

อะไรทำให้เกิดข้อผิดพลาดทางไวยากรณ์ใกล้กับโทเค็นที่ไม่คาดคิด `('?

สาเหตุของข้อความแสดงข้อผิดพลาดนี้มีความหลากหลายมาก และไม่สามารถระบุได้ในบทความเดียว เนื่องจากมีความเป็นไปได้มากมายที่ไวยากรณ์จะผิดพลาดเมื่อดำเนินการคำสั่ง สาเหตุหลักของข้อผิดพลาดนี้คือ:

  • ไวยากรณ์ไม่ถูกต้อง เมื่อดำเนินการคำสั่งใด ๆ ในแพลตฟอร์มใดแพลตฟอร์มหนึ่ง คุณใช้คำสั่งไม่ถูกต้องหรือป้อนไวยากรณ์ผิด
  • เปลือกไม่เข้ากันได้ ระหว่างระบบ Unix/DOS
  • มีปัญหาในการเรียกใช้ bash shell script จาก แหล่งอื่น .

ในบทความนี้ เราถือว่าคุณรู้พื้นฐานของการเข้ารหัสและมีความคิดว่าคุณกำลังทำอะไรอยู่ หากคุณเป็นมือใหม่ วิธีที่ดีที่สุดคือทำตามบทช่วยสอนเชิงลึกของภาษา/คำสั่งที่คุณพยายามดำเนินการ คุณอาจทำผิดพลาดเกี่ยวกับไวยากรณ์บางอย่าง

โซลูชันที่ 1:การตรวจสอบไวยากรณ์และรูปแบบของคำสั่ง

เหตุผลแรกและสำคัญที่สุดที่คุณอาจพบข้อความแสดงข้อผิดพลาดนี้คือไวยากรณ์ที่ไม่ถูกต้องในโค้ดของคุณ หรือคุณไม่ได้ปฏิบัติตามรูปแบบคำสั่งที่แน่นอน แต่ละคำสั่งมีรูปแบบที่กำหนดไว้ล่วงหน้า ซึ่งคุณสามารถดูได้ในเอกสารประกอบ พารามิเตอร์หลายตัวเป็นทางเลือกซึ่งพารามิเตอร์อื่นๆ เป็นข้อบังคับ

นอกจากนี้ ควรระมัดระวังเป็นพิเศษสำหรับพื้นที่เพิ่มเติม , การใช้ เครื่องหมายอัญประกาศ และ บังคับ พารามิเตอร์ที่จำเป็น หากมีสิ่งใดหายไปหรือได้รับการประกาศอย่างไม่ถูกต้อง คุณจะไม่สามารถรันโค้ดของคุณได้

เช่น แทนโค้ดต่อไปนี้

[mycom7] # ./ctopo.sh um_test1 [(1,2),(2,1)]

คุณต้องดำเนินการเป็น

[mycom7] # ./ctopo.sh um_test1 "[(1,2),(2,1)]"

นอกจากนี้ ตรวจสอบให้แน่ใจว่าคุณได้ดำเนินการคำสั่ง/เชลล์สคริปต์ของคุณอย่างถูกต้อง หากมีหลายบรรทัด

เนื่องจากประเภทพารามิเตอร์ จึงจำเป็นต้องมีเครื่องหมายคำพูดคู่ พื้นที่เพิ่มเติมอาจทำให้โค้ดของคุณเสียหายและบังคับข้อความแสดงข้อผิดพลาด ตรวจสอบให้แน่ใจว่าคุณได้ตรวจสอบ เอกสารอย่างเป็นทางการ ของคำสั่งที่คุณกำลังดำเนินการและดูว่ามีปัญหาหรือไม่

โซลูชัน 2:การแก้ไขปัญหาเชลล์สคริปต์ของคุณ

หากใช้เชลล์สคริปต์ที่ทำงานในระบบต้นทาง แต่ส่งคืนข้อผิดพลาดในเป้าหมาย คุณสามารถแก้ไขปัญหาสคริปต์ได้โดยตรวจสอบตัวแปรที่เก็บไว้ระหว่างการดำเนินการ แล้วดูว่าสาเหตุของปัญหาคืออะไร นี่เป็นสาเหตุที่พบบ่อยมาก เช่นเดียวกับในหลายกรณี เชลล์พยายามตีความอักขระที่ไม่สามารถพิมพ์ได้

ลองรันเชลล์ด้วยพารามิเตอร์ 'vx' นี่จะแสดงให้เราเห็นว่าคำสั่งใดที่กำลังเรียกใช้และค่าใดที่เก็บไว้ในสคริปต์ คุณสามารถแก้ไขปัญหาและวินิจฉัยสิ่งผิดปกติได้ที่นี่

ตัวอย่างเช่น รันสคริปต์ในเทอร์มินัลหลังจากใส่ 'vx' เป็น:

# sh -vx ./test_script5.sh

คุณสามารถตรวจสอบเนื้อหาของสคริปต์ได้โดยใช้คำสั่ง 'cat' ดังนี้:

# cat test_script5.sh

โซลูชันที่ 3:การใช้คำสั่ง 'dos2unix.exe'

ในไฟล์ข้อความ Windows/DOS บรรทัดใหม่คือการรวมกันของ Carriage Return (\r) ตามด้วย Line Feed (\n) ใน Mac (ก่อน Mac OS X) ตัวแบ่งบรรทัดใช้ Carriage Return (\r) อย่างง่าย Unix/Linux และ Mac OS X ใช้การขึ้นบรรทัดใหม่ (\n) หากคุณใช้ Cygwin จะไม่สามารถดำเนินการกับสคริปต์ที่สร้างโดย DOS/Windows และ Mac รุ่นเก่าได้ เนื่องจากมีอักขระพิเศษ Carriage Return (\r)

แก้ไข:ข้อผิดพลาดทางไวยากรณ์ใกล้กับโทเค็นที่ไม่คาดคิด `(

ที่นี่คุณสามารถสร้างคำสั่ง 'dos2unix.exe' ซึ่งจะแปลงสคริปต์ให้อยู่ในรูปแบบที่ถูกต้อง จากนั้นคุณก็สามารถดำเนินการได้โดยไม่มีปัญหาใดๆ

โดยสรุป คุณต้องศึกษาคำสั่งและประเภทของแพลตฟอร์มที่คุณใช้อยู่ และตรวจสอบให้แน่ใจว่าไม่มีความคลาดเคลื่อนใดๆ เนื่องจากเราไม่สามารถครอบคลุมทุกความเป็นไปได้ คุณคงมีความคิดว่าข้อผิดพลาดประเภทใดที่สามารถเกิดขึ้นได้และจะแก้ไขอย่างไร