Поправете грешка в синтаксиса на Bash близо до неочакван токен

Кодирането в Linux Bash Terminal се превърна в преобладаваща практика в сектора на кодиране. Софтуерните инженери и студентите, изучаващи езика за кодиране, се натъкват на различни грешки. Ако многократно сте виждали грешки като Синтактична грешка близо до неочакван токен „(“ или Синтактична грешка на Bash близо до неочакван токен, можете да опитате да разчитате на методите, описани в статията, и да станете опитен кодер. Прочетете методите, описани в статията в описан ред и коригирайте грешките в командните редове на вашия файл.

Как да коригирате грешка в синтаксиса на Bash близо до неочакван токен

Linux Bash е интерпретатор на командния ред за базираната на Linux система и е заместител на Bourne Shell или sh. Файловете са наименувани с помощта на формата .sh в скриптовете на Linux Bash. Ако има проблеми с форматирането в кода в скрипта на обвивката, може да се сблъскате със синтактична грешка. Ако грешката е близка до символа (, шелът ще ви подкани за грешката в реда и ще покаже грешката в съответния ред. Тъй като Linux Bash е интерпретатор, редът с грешката ще ви бъде върнат в терминала и той ще спре да сканира останалите команди в скрипта. Следователно, трябва да коригирате грешката в конкретния команден ред и да преминете към следващия, за да коригирате неочакваната грешка в токена в скрипта на обвивката. Причините за синтаксиса грешка близо до неочакван токен в Linux Bash са изброени по-долу в този раздел, както следва:

  • Кодиране с escape последователности – Ако сте написали кодовете в Bash скриптове, escape последователностите или кавичките в скрипта може да причинят грешки. Escape-последователностите и кавичките трябва да бъдат написани в правилния формат, за да се коригира грешката.

  • Неправилен синтаксис в кодиращия файл – Синтаксисът в кода може да даде синтактична грешка, ако командата е написана в грешен синтаксис, като например промяна на реда на циклите.

  • Грешно използване на командата – Ако не използвате командата правилно, като например неправилно присвояване на стойност, може да имате синтактична грешка.

  • Несъвместима ОС в системите – Ако обвивката за кодиращия скрипт не е съвместима между Unix и DOS системите, може да имате неочаквана грешка.

  • Проблеми в скрипта на обвивката на bash – Проблемите, които се изпълняват в скрипта на обвивката на bash във файла, копиран от друга система, може да доведат до неочаквана грешка в токена.

Помислете за файл с име example.sh, създаден в Linux Bash скриптове със следните командни редове за обяснителни цели. Примерният файл има възможностите за синтактични грешки и включва всички възможни команди, които могат да се използват в скрипта на обвивката.

str= ‘First command line of ‘(example file)’ in the script’
str= [(1,2),(3,4)]
if[ $day == “mon” ] then
 echo “mon”
else
 echo “no mon”
fi
for VARIABLE in {0..2}; then
do echo command1; echo command2; echo command3; echo command4; done
while true; do if [ $ day == “mon” ]; then echo “mon”; else echo “not mon”; done; fi

Метод 1: Ръчно коригиране на грешки във всеки команден ред

Първият метод за коригиране на грешките е да коригирате синтактичната грешка ръчно във всеки команден ред в скрипта. Стъпките за разрешаване на синтактични грешки в близост до неочакван токен в командните редове са обсъдени в този раздел. Процесът за коригиране на неочакваната грешка в токена в терминала е описан по-долу. Стартирайте файла в терминала, като напишете командата ./example.sh и натиснете клавиша Enter.

2. Отбележете редовете, които имат неочаквана грешка в токена в командните редове в резултата по-долу.

3. Поправете грешката във всеки ред, като следвате методите, обсъдени по-долу поотделно, и запишете файла.

4. Стартирайте файла отново след промените и проверете дали синтактичната грешка е разрешена във файла.

Стъпка I: Прочетете съдържанието на файла

Първата стъпка към разрешаването на синтактичната грешка в командните редове е да прочетете файла в терминала. АКО има проблеми с файла, може да не успеете да го видите. Редовната практика за преглед на файла е да стартирате файла с командата ./example.sh, но не можете да променяте съдържанието на файла. Опциите за преглед на съдържанието на файла и промяна на командните редове, за да коригирате синтактичната грешка близо до неочакван токен ‘(‘), са разгледани по-долу.

Вариант 1: Чрез CAT команда

Първата опция е да използвате командата cat, за да видите файла в скрипта на обвивката. Прочетете съдържанието на файла с неочаквана грешка в токена, като използвате командата cat, като напишете командата cat –v example.sh в терминала.

Забележка 1: example.sh се използва за обяснителни цели и трябва да въведете името на файла, който има неочаквана грешка в токена.

Забележка 2: Командата cat –v се използва за показване на всички невидими знаци, които вероятно представляват връщане на карета или интервал без прекъсване.

Вариант 2: Чрез VX команда

Ако не можете да използвате командата cat, можете да опитате да използвате командата vx, за да видите и промените командите във файла, като използвате стъпката, дадена по-долу. Въведете командата sh –vx ./example.sh в терминала, за да отворите файла.

Вариант 3: Чрез od –a команда

3. Ако има няколко невидими знака в командните редове, можете да използвате командата od –a, за да видите файла. Ако съдържанието на файла не се вижда в кодовия файл, можете да опитате да прочетете файла, като използвате командата od –a example.sh, за да промените кода.

Стъпка II: Премахнете прекъсванията на реда в Windows

Ако има прекъсвания на редове на Windows в скрипта на обвивката, можете да използвате командите на конзолата, за да премахнете прекъсванията на редове и да копирате редовете на кода в нов файл, за да коригирате грешката.

Въведете следната команда в терминала, за да запишете съдържанието във файла в друг файл с име correctedexample.sh, за да премахнете прекъсванията на редове на Windows в скрипта.

tr –d ‘r’ <example.sh> correctedexample.sh

Стъпка III: Задайте разрешения за новосъздадения файл

Трябва да зададете разрешението на новосъздадения файл, за да редактирате файла, така че файлът да може да се изпълнява в обвивката. Въведете командата като chmod 755 correctedexample.sh в терминала, за да предоставите разрешенията за файла и да стартирате файла. Вече можете да видите коригирания файл и да коригирате проблемите с форматирането и да коригирате синтактичната грешка близо до неочакван маркер „(“ във файла.

Стъпка IV: Форматирайте кода във файла

Втората стъпка е да форматирате кодовите редове поотделно и да промените ръчно командните редове във файла. Опциите за форматиране на файла за коригиране на синтактичната грешка близо до неочакван токен „(“ са разгледани по-долу в този раздел.

Вариант 1: Заменете единичните кавички с двойни кавички

Ако използвате единични кавички в командните редове, трябва да промените командата, като замените единичните кавички с двойни кавички, за да коригирате синтактичната грешка. Във файла example.sh премахнете кодовите редове, които имат ‘ и ​​’ или единичните кавички в командата, и заменете единичните кавички с двойните кавички или “ и „. Тук, в примерния файл, трябва да промените кода като str= „Първи команден ред на „(примерен файл)“ в скрипта“

Забележка: Двойните кавички са необходими за командите за тип параметър, като str= “[(1,2),(3,4)]“.

Вариант 2: Добавете $ към низовите линии

Ако сте добавили стойности на низ към скрипта, трябва да добавите $ към стойностите на низа, за да коригирате синтактичната грешка в скрипта. Добавете $ за командните редове със стойностите на низа, за да коригирате неочакваната грешка. Тук, в примерния файл, променете командния ред като;

str= $ ‘First command line of ‘(example file)’ in the script’

Забележка: Ако използвате $ в стойността на низа, можете да заобиколите последователността за избягване на обратна наклонена черта, тъй като командните редове се декодират от стандарта ANSI C. С други думи, като използвате $ за низова стойност, можете да избегнете използването на двойни кавички вместо единични кавички в командните редове.

Вариант 3: Преобразувайте табулатори в интервали

Интервалите, които сте оставили между две изрази в командата, трябва да бъдат интервали вместо табулатори, за да коригирате синтактичната грешка в скрипта. Ако получавате грешката в Cygwin, можете да опитате да преобразувате разделите в кодовете в интервали, за да коригирате грешката. Командният ред е даден по-долу като;

do echo command1;       echo command2;             echo command3;             echo command4;             done

Горната команда трябва да бъде пренаписана, както е показано по-долу, за да коригирате грешката.

do echo command1; echo command2; echo command3; echo command4; done

Вариант 4: Използвайте Escape символи

Ако използвате символ bash, важно е да използвате escape символ заедно със знака bash, за да коригирате синтактична грешка. Скобите или () са специални символи на bash във файла, следователно ще трябва да използвате escape символа или обратната наклонена черта в командния ред, за да избегнете нормалните знаци, за да изпълните командата. Командата str= ‘Първи команден ред на ‘(примерен файл)’ в скрипта’ няма да даде грешка в терминала, тъй като се използва escape символ.

Вариант 5: Използвайте интервал между знаците

Скриптът на обвивката разпознава командите и изразите в скрипта по стойностите по подразбиране. Трябва да осигурите правилното използване на пространството между знаците, така че обвивката да може да идентифицира командата, дадена в скрипта. Интервалът е знак, който се използва за разграничаване на два знака в командния ред. В кода няма интервал между if и [, which gives the unexpected token error as the if[ command is not identified by the shell. If the code is changed to if [ $ day == “mon” ]; тогава грешката може да бъде решена като командата за бюлетин на обвивката, ако е идентифицирана от обвивката.

Вариант 6: Използвайте разделител на команди за изявления

Различните команди в скрипта на обвивката трябва да бъдат разделени на изрази, за да може Терминалът да идентифицира отделни команди. Трябва да използвате разделител на команди, за да коригирате синтактичната грешка в Linux Bash. Изявленията в командата трябва да бъдат разделени от команден разделител, като точка и запетая или ; или нов ред, като натиснете клавиша Enter. Например, командата в кода if [ $ day == “mon” ] след това трябва да се промени сякаш [ $ day == “mon” ]; след това да поправите грешката. Тъй като точката и запетаята се използва като разделител на командите между знаците [ and then, you can fix this error.

Option 7: Remove Additional Statements

Sometimes, you may have added additional statements or may have mixed up the codes in case of multiple nested loops. You need to remove the additional statements on the command lines to fix the Syntax error near unexpected token ‘(’ in the Linux Bash. The bash loops for…done or and the constructional constructs if… fi needs to be in the correct syntax. The example file has the wrong syntax in the for loop has the term then which is used in the if statement. Modifying the code as the following code will fix the unexpected token error. The statement then is an additional statement in the code and removing the term will fix the error.

for VARIABLE in {0..2}; do echo command1; echo command2; echo command3; echo command4; done 

Option 8: Ensure Order of Closing of Statements is Correct

If you are using many nested or conditional construct statements in the shell script, you have to ensure that the loops are closed in the order they are opened. You can use a new line separator to avoid conflicts with the loops. The order of closing the nested loops and conditional statements should be correct and must not be altered. The loops in the code while true; do if [ $ day == “mon” ]; след това echo “mon”; иначе echo „не mon“; Свършен; fi трябва да се затвори в правилния ред. Промяната на кода, както е показано по-долу, може да коригира неочакваната грешка на токена, тъй като редът на затваряне на операторите е коригиран.

while true; do if [ $ day == “mon” ]; then echo “mon”; else echo “not mon”; fi; done

Метод 2: Пренаписване на код

Ако сте копирали кода и сте го поставили в нов файл на терминала, можете да опитате да пренапишете кода ръчно, за да коригирате грешката. Грешките в кода могат да бъдат коригирани, ако сте написали кода без никакви грешки във форматирането в скрипта на обвивката. Това е така, защото скритите знаци и проблемите с форматирането в текстовия редактор, като например Microsoft Word, може да сте използвали, за да копирате и поставите кода, може да са довели до грешката.

Метод 3: Използвайте командата Dos2unix.exe

Ако използвате операционна система Unix, можете да пишете кодове със символа за преместване на ред като n, за да преминете към следващия ред във файла. Ако обаче използвате операционна система Windows, трябва да преминете към следващия ред в кода, като използвате връщането на карета и преместването на ред или rn във файла. Ако изпълните кода, написан в операционната система Windows в Cygwin, може да получите синтактична грешка близо до неочакван токен ‘(‘.

За да коригирате грешката, трябва да изчистите символите за връщане на каретата, като използвате инструмента на командния ред DOS към Unix като конвертор на текстов формат. Въведете следната команда като dos2unix.exe example.sh в терминала и можете да конвертирате файла във формат Unix.

***

Статията обсъди основните методи за коригиране на синтактична грешка на Bash близо до неочакван токен ‘(‘ в скрипта. Ако използвате Linux Bash, можете да използвате методите, обяснени в този раздел, за да коригирате синтактична грешка на Bash близо до неочакван токен. Ако прочетохте цялата статия и открихте, че съдържанието е полезно, моля, уведомете ни вашите предложения и запитвания в секцията за коментари.

  Вашият Microsoft Office все още получава актуализации за защита?