Виправити синтаксичну помилку Bash біля неочікуваного маркера
Різне / / May 30, 2022
![Виправити синтаксичну помилку Bash біля неочікуваного маркера](/f/2354f2ec9eb0c3c29d140a06e3066a5f.png)
Кодування в терміналі Linux Bash стало переважаючою практикою в секторі кодування. Інженери програмного забезпечення та студенти, які вивчають мову кодування, стикаються з різними помилками. Якщо ви неодноразово бачили такі помилки, як синтаксична помилка біля неочікуваного маркера «(» або синтаксична помилка Bash майже несподіваний маркер, ви можете спробувати покластися на методи, описані в статті, і стати досвідченим кодер. Прочитайте описані в статті методи в описаному порядку і виправте помилки в командних рядках вашого файлу.
![Виправити синтаксичну помилку Bash біля неочікуваного маркера](/f/2e157f68698de3d4eee628460954a7e6.png)
Зміст
- Як виправити синтаксичну помилку Bash біля неочікуваного маркера
- Спосіб 1. Виправте помилки вручну в кожному командному рядку
- Крок I: Прочитайте вміст файлу
- Крок ІІ. Видаліть розриви рядків Windows
- Крок ІІІ: налаштуйте дозволи на щойно створений файл
- Крок IV: Відформатуйте код у файлі
- Спосіб 2: переписати код
- Спосіб 3. Використовуйте команду Dos2unix.exe
Як виправити синтаксичну помилку Bash біля неочікуваного маркера
Linux Bash є інтерпретатором командного рядка для системи на базі Linux і є заміною Bourne Shell або sh. Файли називаються у форматі .sh у Linux
Bash сценарії. Якщо в коді в сценарії оболонки виникають проблеми з форматуванням, ви можете зіткнутися з синтаксичною помилкою. Якщо помилка близька до ( символ, оболонка підкаже вам помилку в рядку і відобразить помилку у відповідному рядку. Оскільки Linux Bash є інтерпретатором, рядок з помилкою буде повернено вам у терміналі, і він припинить сканування решти команд у скрипті. Отже, вам потрібно виправити помилку в конкретному командному рядку та перейти до наступного, щоб виправити неочікувану помилку маркера в сценарії оболонки. Причини синтаксичної помилки біля несподіваного маркера в Linux Bash наведено нижче в цьому розділі, як показано нижче:- Кодування з escape-послідовністю- Якщо ви написали коди в сценарії Bash, escape-послідовності або лапки в сценарії можуть викликати помилки. Щоб виправити помилку, escape-послідовності та лапки мають бути записані у правильному форматі.
- Неправильний синтаксис у файлі кодування- Синтаксис у коді може давати синтаксичну помилку, якщо команда написана в неправильному синтаксисі, наприклад зміна порядку циклів.
- Неправильне використання команди- Якщо ви використовуєте команду неправильно, наприклад, неправильне призначення значення, можливо, у вас синтаксична помилка.
- Несумісна ОС в системах- Якщо оболонка для сценарію кодування несумісна між системами Unix і DOS, у вас може виникнути неочікувана помилка.
- Проблеми в сценарії оболонки bash- Проблеми, що запускаються в сценарії оболонки bash у файлі, скопійованому з іншої системи, можуть призвести до неочікуваної помилки маркера.
Розглянемо файл з іменем приклад.ш створений у сценарії Linux Bash з наступними командними рядками для пояснення. Файл прикладу містить можливості синтаксичних помилок і включає всі можливі команди, які можна використовувати в сценарії оболонки.
str= «Перший командний рядок «(файл-приклад)» у сценарії»str= [(1,2),(3,4)]if[ $day == “mon” ] тоді луна "пн"інше луна "ні пн"fiдля VARIABLE в {0..2}; потімвиконати команду echo1; команда echo2; команда echo3; команда echo4; зробленопоки правда; робити, якщо [ $ день == “пн” ]; потім луна «мон»; else echo «не пн»; виконано; fi
![приклад файлу з командними рядками в linux bash](/f/344e7f952af898601d5d35c319efb1ef.png)
Спосіб 1. Виправте помилки вручну в кожному командному рядку
Перший спосіб виправити помилки — це виправити синтаксичну помилку вручну в кожному командному рядку сценарію. У цьому розділі обговорюються кроки для вирішення синтаксичних помилок біля несподіваного маркера в командних рядках. Нижче описано процес усунення несподіваної помилки маркера в терміналі. Запустіть файл у термінал ввівши ./example.sh команду та натиснення Введітьключ.
![Команда відкриття файлу example.sh. Виправити синтаксичну помилку Bash біля неочікуваного маркера](/f/eb83f5a3f3513627738ad7508e25bfa0.png)
2. Зверніть увагу на лінії які мають неочікувану помилку маркера в командних рядках у наведеному нижче результаті.
3. Виправте помилку у кожному рядку, дотримуючись методів, описаних нижче, окремо та збереження файл.
4. Біжи файл знову після змін і перевірте, чи усунено синтаксичну помилку у файлі.
Читайте також:Як встановити Linux Bash Shell на Windows 10
Крок I: Прочитайте вміст файлу
Першим кроком до вирішення синтаксичної помилки в командних рядках є читання файлу в терміналі. ЯКЩО є проблеми з файлом, можливо, ви не зможете переглянути файл. Звичайною практикою перегляду файлу є запуск файлу за допомогою команди ./example.sh але ви не можете змінити вміст у файлі. Нижче обговорюються параметри перегляду вмісту файлу та зміни командних рядків, щоб виправити синтаксичну помилку біля несподіваного маркера «(».
Варіант 1: за допомогою команди CAT
Перший варіант - використовувати кіт команда для перегляду файлу в сценарії оболонки. Прочитайте вміст файлу з неочікуваною помилкою маркера за допомогою команди cat, ввівши команду cat –v приклад.ш в терміналі.
Примітка 1: The приклад.ш використовується для пояснення, і вам потрібно ввести ім’я файлу, у якому є неочікувана помилка маркера.
Примітка 2: Команда cat –v використовується для відображення всіх невидимих символів, які, ймовірно, представляють пробіл для повернення каретки або пробіл без розриву.
![файл example.sh відкрити команду cat у терміналі Linux](/f/9ceb27a4b15da3c8d9855d115a083953.png)
Варіант 2: Через команду VX
Якщо ви не можете використовувати команду cat, спробуйте скористатися командою vx, щоб переглянути та змінити команди у файлі, виконавши крок, наведений нижче. Введіть sh –vx ./example.sh команду в терміналі, щоб відкрити файл.
![Команда sh vx example.sh. Виправити синтаксичну помилку Bash біля неочікуваного маркера](/f/ed772d3d5b9a6520718a93456b1da40e.png)
Варіант 3: за допомогою команди od –a
3. Якщо в командних рядках є кілька невидимих символів, ви можете скористатися командою od –a для перегляду файлу. Якщо вміст файлу не видно у файлі коду, ви можете спробувати прочитати файл за допомогою команди od –приклад.ш щоб змінити код.
![від команди example.sh у терміналі Linux](/f/eeccd3252d58d02a2348dbe03685840b.png)
Крок ІІ. Видаліть розриви рядків Windows
Якщо в сценарії оболонки є розриви рядків Windows, ви можете використовувати консольні команди, щоб видалити розриви рядків і скопіювати рядки коду до нового файлу, щоб виправити помилку.
Введіть таку команду в терміналі, щоб зберегти вміст файлу в іншому файлі з іменем виправленийприклад.ш щоб видалити розриви рядків Windows у сценарії.
tr –d ‘\r’виправленийприклад.ш
![консольна команда для видалення розриву рядка Windows. Виправити синтаксичну помилку Bash біля неочікуваного маркера](/f/4189da3a683faf469f5b3d1b8c9d4a70.png)
Крок ІІІ: налаштуйте дозволи на щойно створений файл
Вам потрібно встановити дозвіл для щойно створеного файлу для редагування файлу, щоб файл міг виконуватися в оболонці. Введіть команду як chmod 755 виправленийexample.sh у терміналі, щоб надати дозволи на файл і запустити файл. Тепер ви можете переглянути виправлений файл, виправити проблеми з форматуванням і виправити синтаксичну помилку біля неочікуваного маркера «(» у файлі.
![Команда chmod 755 correctedexample.sh для встановлення дозволів у терміналі linux](/f/c24a2acb4404215bee3be626386b905c.png)
Крок IV: Відформатуйте код у файлі
Другим кроком є форматування рядків коду окремо та змінення командних рядків у файлі вручну. Параметри форматування файлу, щоб виправити синтаксичну помилку біля несподіваного маркера «(», обговорюються нижче в цьому розділі.
Варіант 1. Замініть одинарні лапки подвійними
Якщо ви використовуєте одинарні лапки в командних рядках, вам потрібно змінити команду, замінивши одинарні лапки подвійними, щоб виправити синтаксичну помилку. В приклад.ш файл, видаліть рядки коду, які мають ‘ і ’ або одинарні лапки у команді та замініть одинарні лапки на подвійні лапки або “ і ’’. Тут, у файлі прикладу, потрібно змінити код як str= "Перший командний рядок "\(файл прикладу)\" у скрипті"
Примітка: Подвійні лапки необхідні для команд типу параметра, таких як str= “[(1,2),(3,4)]”.
![замініть одинарні лапки подвійними у файлі bash example.sh](/f/d1843275f7639d3715f78f682a77378f.png)
Читайте також:20 найкращих легких дистрибутивів Linux 2022 року
Варіант 2. Додайте $ до рядків рядків
Якщо ви додали рядкові значення до сценарію, вам потрібно додати $ до значень рядка, щоб виправити синтаксичну помилку в сценарії. Додайте $ для командних рядків за допомогою рядок значення, щоб виправити неочікувану помилку. Тут, у файлі прикладу, змініть командний рядок як;
str= $ ‘Перший командний рядок ‘\(файл-приклад)\’ в сценарії’
Примітка: Якщо ви використовуєте $ у рядковому значенні ви можете обійти escape-послідовність зворотної косої риски, оскільки командні рядки декодуються стандартом ANSI C. Іншими словами, використовуючи $ для значення рядка, ви можете уникнути використання подвійних лапок замість одинарних лапок у командних рядках.
![знак долара в рядках рядків. Виправити синтаксичну помилку Bash біля неочікуваного маркера](/f/0817bde26be03406189a6bd9b2df3988.png)
Варіант 3. Перетворіть табуляції на пробіли
Пробіли, які ви залишили між двома операторами в команді, мають бути пробілами замість табуляції, щоб виправити синтаксичну помилку в сценарії. Якщо ви отримуєте помилку на Cygwin, ви можете спробувати перетворити табуляції в кодах на пробіли, щоб виправити помилку. Нижче наведено командний рядок як;
виконати команду echo1; команда echo2; команда echo3; команда echo4; зроблено
![вкладки, що використовуються в команді do echo у файлі bash example.sh](/f/0d45254ce6363b1fda45a7e3d93fe1f2.png)
Наведену вище команду слід переписати, як показано нижче, щоб виправити помилку.
виконати команду echo1; команда echo2; команда echo3; команда echo4; зроблено
Варіант 4. Використовуйте escape-символи
Якщо ви використовуєте символ bash, важливо використовувати escape-символ разом із символом bash, щоб виправити синтаксичну помилку. The круглі дужки або () є спеціальними символами bash у файлі, отже, вам потрібно буде використовувати escape-символ або зворотний скіс у командному рядку, щоб уникнути звичайних символів для виконання команди. The str= ‘Перший командний рядок \’(файл прикладу)\’ в сценарії’ Команда не дасть помилки в терміналі, оскільки використовується escape-символ.
Читайте також: Як стати серед нас у Linux
Варіант 5. Використовуйте пробіл між символами
Сценарій оболонки розпізнає команди та оператори сценарію за значеннями за замовчуванням. Вам потрібно забезпечити належне використання простору між символами, щоб оболонка могла ідентифікувати команду, задану в сценарії. Пробіл — це символ, який використовується для розрізнення двох символів у командному рядку. У коді немає пробілу між якщо і [, що надає несподівану помилку маркера як якщо [ Команда не ідентифікується оболонкою. Якщо код змінено на якщо [ $ день == “пн” ]; тоді помилку можна вирішити за допомогою команди бюлетеня оболонки якщо ідентифікується оболонкою.
Варіант 6. Використовуйте роздільник команд для операторів
Різні команди в сценарії оболонки потрібно розділити на оператори, щоб термінал ідентифікував окремі команди. Вам потрібно використовувати роздільник команд, щоб виправити синтаксичну помилку в Linux Bash. Операції в команді мають бути розділені роздільником команд, таким як крапка з комою або a ; або новий рядок, натиснувши кнопку Введіть ключ. Наприклад, команда в коді якщо [ $ день == “пн” ], то необхідно змінити як якщо [ $ день == “пн” ]; потім щоб виправити помилку. Оскільки крапка з комою використовується як роздільник команд між символами [ і потім, ви можете виправити цю помилку.
![відредагуйте команду example.sh у файлі bash. Виправити синтаксичну помилку Bash біля неочікуваного маркера](/f/b15f316943e7bcadc70a7438e4541261.png)
Варіант 7. Вилучіть додаткові заяви
Іноді ви, можливо, додали додаткові оператори або переплутали коди у випадку кількох вкладених циклів. Вам потрібно видалити додаткові оператори з командних рядків, щоб виправити синтаксичну помилку біля несподіваного маркера «(» у Linux Bash. Петлі bash за...зроблено або і конструкційні конструкції якщо… фі має бути в правильному синтаксисі. У файлі прикладу неправильний синтаксис для цикл має термін потім який використовується в якщо заяву. Змінення коду як наведеного нижче коду виправить неочікувану помилку маркера. Заява потім є додатковим оператором у коді, і видалення терміна виправить помилку.
для VARIABLE в {0..2}; виконати команду echo1; команда echo2; команда echo3; команда echo4; зроблено
![редагування команди for у файлі bash example.sh](/f/09f0a51ef4558250313a51dc7e1c714c.png)
Варіант 8. Переконайтеся, що порядок закриття звітів правильний
Якщо ви використовуєте багато вкладених або умовних конструкцій у сценарії оболонки, ви повинні переконатися, що цикли закриті в порядку їх відкриття. Ви можете використовувати новий роздільник рядків, щоб уникнути конфліктів із циклами. Порядок закриття вкладених циклів і умовних операторів повинен бути правильним і не повинен бути змінений. Цикли в коді поки правда; робити, якщо [ $ день == “пн” ]; потім луна «мон»; else echo «не пн»; виконано; fi потрібно закрити в правильному порядку. Зміна коду, як показано нижче, може виправити неочікувану помилку маркера, оскільки порядок закриття операторів виправлено.
поки правда; робити, якщо [ $ день == “пн” ]; потім луна «мон»; else echo «не пн»; fi; зроблено
![виконувати команду while. Виправити синтаксичну помилку Bash біля неочікуваного маркера](/f/06ce0c213abb15c053f52ccdce91cbb1.png)
Читайте також:Що таке інтерпретатор командного рядка?
Спосіб 2: переписати код
Якщо ви скопіювали код і вставили його в новий файл на терміналі, ви можете спробувати переписати код вручну, щоб виправити помилку. Помилки в коді можна виправити, якщо ви написали код без помилок форматування в сценарії оболонки. Це пов’язано з тим, що приховані символи та проблеми з форматуванням у текстовому редакторі, наприклад Microsoft Word, які ви могли використовувати для копіювання та вставки коду, могли викликати помилку.
Спосіб 3. Використовуйте команду Dos2unix.exe
Якщо ви використовуєте операційну систему Unix, ви можете писати коди з символом переведення рядка як \n щоб перейти до наступного рядка у файлі. Однак, якщо ви використовуєте ОС Windows, вам потрібно перейти до наступного рядка в коді за допомогою повернення каретки та переведення рядка або \r\n у файлі. Якщо ви виконуєте код, написаний в ОС Windows, у Cygwin, ви можете отримати синтаксичну помилку біля неочікуваного маркера «(».
Щоб виправити помилку, потрібно очистити символи повернення каретки за допомогою DOS для Unix інструмент командного рядка як конвертер форматів текстових файлів. Введіть таку команду як dos2unix.exe example.sh у терміналі, і ви можете конвертувати файл у формат Unix.
![Команда dos2unix.exe example.sh. Виправити синтаксичну помилку Bash біля неочікуваного маркера](/f/d5fbbb36fde3491200cea82d465ff68a.png)
Рекомендовано:
- Як створити обліковий запис Telegram на Android
- Виправити помилку під час виконання C++ у Windows 10
- Як видалити обліковий запис Github назавжди
- 14 найкращих відеокарт для Linux
У статті розглянуто основні методи виправлення Синтаксична помилка Bash біля неочікуваного маркера‘(’ в сценарії. Якщо ви використовуєте Linux Bash, ви можете використовувати методи, описані в цьому розділі, щоб виправити синтаксичну помилку Bash біля неочікуваного маркера. Якщо ви прочитали всю статтю і знайшли вміст корисним, повідомте нам свої пропозиції та запитання в розділі коментарів.