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

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

Використання команди 'dos2unix.exe'

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

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

Цікаві Статті