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

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

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

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

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

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

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

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

โซลูชันที่ 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'

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

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

บทความที่น่าสนใจ