Виправлено: помилка синтаксису біля несподіваного маркера `(& lsquo;

Синтаксична помилка повідомлення про помилку поблизу несподіваного маркера `(' виникає в середовищі 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 новий рядок - це комбінація повернення каретки (\ r), за якою йде подача рядка (\ n). У Mac (до Mac OS X) у розриві рядка використовувався простий повернення каретки (\ r). У Unix / Linux та Mac OS X використовуються розриви рядків Feed Feed (\ n). Якщо ви використовуєте Cygwin, він не зможе обробити сценарії, створені DOS / Windows та старішими Mac, через додатковий символ повернення каретки (\ r).

За допомогою команди 'dos2unix.exe'

Тут ви можете створити команду 'dos2unix.exe', яка перетворить скрипт у правильний формат, а потім ви зможете виконати його без будь-яких проблем.

На закінчення вам потрібно дослідити свої команди та тип платформи, яку ви використовуєте, і переконатися, що немає розбіжностей. Оскільки ми не можемо охопити всі можливості, ви могли б уявити, які типи помилок можуть виникнути і як їх виправити.