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



ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา

ข้อความแสดงข้อผิดพลาด ข้อผิดพลาดทางไวยากรณ์ใกล้กับโทเค็นที่ไม่คาดคิด `(‘ เกิดขึ้นในสภาพแวดล้อมแบบ Unix, 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 ใช้ตัวแบ่งบรรทัด Line Feed ( n) หากคุณใช้ Cygwin มันจะล้มเหลวในการประมวลผลสคริปต์ที่สร้างโดย DOS / Windows และ Mac รุ่นเก่าเนื่องจากอักขระ Carriage Return ( r) พิเศษ

การใช้

โดยใช้คำสั่ง 'dos2unix.exe'

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

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

อ่าน 3 นาที