Khắc phục: Lỗi cú pháp gần mã thông báo không mong muốn `(& lsquo;

Lỗi cú pháp thông báo lỗi gần mã thông báo không mong muốn `(' xảy ra trong môi trường kiểu Unix, Cygwin, và trong giao diện dòng lệnh trong Windows. Lỗi này hầu hết có thể được kích hoạt khi bạn cố chạy một tập lệnh shell đã được chỉnh sửa hoặc được tạo trong hệ thống DOS / Windows hoặc Mac cũ hơn.

Lỗi cú pháp gần mã thông báo không mong muốn `('

Thông báo lỗi này cũng xuất hiện khi bạn đang nhập lệnh trong dòng lệnh Linux cho các tác vụ hàng ngày như sao chép tệp theo cách thủ công, v.v. Các lý do chính khiến thông báo lỗi này xảy ra là do cú pháp sai hoặc vấn đề của hệ điều hành trong việc diễn giải các lệnh của hệ thống khác / vỏ sò.

Nguyên nhân nào gây ra Lỗi cú pháp gần mã thông báo không mong muốn `('?

Lý do cho thông báo lỗi này rất đa dạng và không thể được liệt kê trong một bài báo vì có hàng ngàn khả năng sai cú pháp khi thực hiện lệnh. Các lý do cốt lõi cho lỗi này là:

  • Cú pháp sai khi thực hiện bất kỳ lệnh nào trong cả hai nền tảng. Hoặc bạn đang sử dụng lệnh không chính xác hoặc đã nhập sai cú pháp.
  • Shell không tương thích giữa các hệ thống Unix / DOS.
  • Có vấn đề khi chạy tập lệnh bash shell từ một nguồn khác .

Trong bài viết này, chúng tôi giả định rằng bạn biết những điều cơ bản về mã hóa và có ý tưởng về những gì bạn đang làm. Nếu bạn là người mới bắt đầu, tốt nhất là bạn nên làm theo các hướng dẫn chuyên sâu về ngôn ngữ / lệnh mà bạn đang cố gắng thực thi. Có thể bạn đã mắc lỗi cú pháp nào đó.

Giải pháp 1: Kiểm tra cú pháp và định dạng lệnh

Lý do đầu tiên và quan trọng nhất khiến bạn có thể gặp thông báo lỗi này là do cú pháp sai trong mã của bạn hoặc bạn không tuân theo định dạng chính xác của lệnh. Mỗi lệnh có một định dạng được xác định trước mà bạn có thể xem trong tài liệu của nó. Một số tham số là tùy chọn mà những tham số khác là bắt buộc.

Hơn nữa, cần lưu ý thêm về không gian thừa , sử dụng dấu ngoặc kép và các tham số bắt buộc cần thiết. Nếu thiếu bất kỳ mã nào trong số chúng hoặc được khai báo không chính xác, bạn sẽ không thể thực thi mã của mình.

Ví dụ: thay vì mã sau

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

Bạn cần thực hiện nó như

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

Ngoài ra, hãy đảm bảo rằng bạn đang thực thi các lệnh / tập lệnh shell của mình một cách chính xác nếu nó kéo dài nhiều dòng.

Vì loại tham số, dấu ngoặc kép là cần thiết. Khoảng trống thừa cũng có thể làm hỏng mã của bạn và buộc thông báo lỗi. Đảm bảo rằng bạn kiểm tra tài liệu chính thức về lệnh bạn đang thực thi và xem có sự cố ở đó không.

Giải pháp 2: Khắc phục sự cố tập lệnh shell của bạn

Nếu đang sử dụng tập lệnh shell hoạt động trong hệ thống nguồn nhưng trả về lỗi trong đích, bạn có thể khắc phục sự cố tập lệnh bằng cách kiểm tra các biến được lưu trữ trong quá trình thực thi và sau đó xem điều gì đang gây ra sự cố. Đây là một nguyên nhân rất phổ biến vì trong một số trường hợp, trình bao cố gắng diễn giải một ký tự không in được.

Hãy thử chạy trình bao với tham số là 'vx'. Điều này sẽ cho chúng ta thấy những lệnh nào đang được chạy và những giá trị nào được lưu trữ trong tập lệnh. Thông qua đây bạn có thể khắc phục sự cố và chẩn đoán những gì đang xảy ra.

Ví dụ: thực thi tập lệnh trong thiết bị đầu cuối sau khi bao gồm 'vx' là:

# sh -vx ./test_script5.sh

Bạn có thể kiểm tra nội dung của tập lệnh bằng lệnh 'cat' như sau:

# cat test_script5.sh

Giải pháp 3: Sử dụng lệnh 'dos2unix.exe'

Trong các tệp văn bản Windows / DOS, một dòng mới là sự kết hợp của Chuyển hàng trở lại (\ r) theo sau là Nguồn cấp dòng (\ n). Trong Mac (trước Mac OS X), dấu ngắt dòng sử dụng Dấu chuyển hàng đơn giản (\ r). Unix / Linux và Mac OS X sử dụng ngắt dòng Nguồn cấp dữ liệu dòng (\ n). Nếu bạn đang sử dụng Cygwin, nó sẽ không xử lý được các tập lệnh được tạo bởi DOS / Windows và Mac cũ hơn do có thêm ký tự Carriage Return (\ r).

Sử dụng lệnh 'dos2unix.exe'

Ở đây bạn có thể tạo lệnh 'dos2unix.exe' sẽ chuyển đổi tập lệnh sang định dạng chính xác và sau đó bạn có thể thực thi nó mà không gặp bất kỳ vấn đề nào.

Để kết luận, bạn cần nghiên cứu các lệnh và loại nền tảng bạn đang sử dụng và đảm bảo không có bất kỳ sự khác biệt nào. Vì chúng tôi không thể đề cập đến từng và mọi khả năng, bạn sẽ có ý tưởng về những loại lỗi nào có thể xảy ra và cách khắc phục chúng.