Поправи грешку у синтакси Басх у близини неочекиваног токена

Кодирање у Линук Басх терминалу постало је доминантна пракса у сектору кодирања. Софтверски инжењери и студенти који уче језик кодирања наилазе на разне грешке. Ако сте више пута видели грешке као што су Синтаксичка грешка у близини неочекиваног токена ‘(‘ или Басх синтаксичка грешка у близини неочекиваног токена, можете покушати да се ослоните на методе описане у чланку и постанете искусни програмер. Прочитајте методе описане у чланку у описани редослед и исправите грешке у командним линијама у вашој датотеци.

Како да поправите грешку у синтакси Басх у близини неочекиваног токена

Линук Басх је тумач командне линије за систем заснован на Линук-у и замена је за Боурне Схелл или сх. Датотеке су именоване коришћењем .сх формата у Линук Басх скриптама. Ако постоје проблеми са форматирањем кода у схелл скрипти, можда ћете се суочити са синтаксичком грешком. Ако је грешка близу знака (, љуска ће вас упутити на грешку у реду и приказати грешку у одговарајућем реду. Пошто је Линук Басх тумач, ред са грешком ће вам бити враћен у Терминал и он ће престати да скенира остале команде у скрипти. Стога, морате да поправите грешку у одређеној командној линији и пређете на следећу да бисте поправили неочекивану грешку токена у скрипти љуске. Узроци синтаксе грешка близу неочекиваног токена у Линук Басх-у су наведене у наставку у овом одељку као у наставку:

  • Кодирање са излазним секвенцама – Ако сте кодове написали у Басх скриптовању, излазне секвенце или наводници у скрипти могу изазвати грешке. Излазне секвенце и наводници морају бити написани у исправном формату да би се поправила грешка.

  • Нетачна синтакса у датотеци за кодирање – Синтакса у коду може дати синтаксичку грешку ако је команда написана у погрешној синтакси, као што је промена редоследа петљи.

  • Погрешна употреба команде – Ако не користите команду исправно, као што је нетачна додела вредности, можда имате синтаксичку грешку.

  • Некомпатибилан ОС у системима – Ако љуска за скрипту за кодирање није компатибилна између Уник и ДОС система, можда ћете имати неочекивану грешку.

  • Проблеми у скрипти басх схелл- Проблеми који се покрећу у скрипти басх схелл на датотеци копираној са другог система могу довести до неочекиване грешке токена.

Размотрите датотеку под називом екампле.сх креирану у Линук Басх скрипти са следећим командним линијама у сврху објашњења. Датотека примера има могућности за синтаксичке грешке и укључује све могуће команде које се могу користити у схелл скрипти.

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: Ручно поправите грешке у свакој командној линији

Први метод за исправљање грешака је ручно поправљање синтаксичке грешке у свакој командној линији у скрипти. У овом одељку се разматрају кораци за решавање синтаксичких грешака у близини неочекиваног токена у командним линијама. Процес поправљања неочекиване грешке токена на терминалу је описан у наставку. Покрените датотеку у терминалу тако што ћете откуцати команду ./екампле.сх и притиснути тастер Ентер.

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

3. Исправите грешку у сваком реду тако што ћете пратити методе о којима се говори у наставку појединачно и сачувати датотеку.

4. Поново покрените датотеку након промена и проверите да ли је синтаксичка грешка отклоњена у датотеци.

Корак И: Прочитајте садржај датотеке

Први корак ка решавању синтаксичке грешке у командним линијама је читање датотеке у терминалу. АКО постоје проблеми са датотеком, можда нећете моћи да видите датотеку. Уобичајена пракса прегледа датотеке је покретање датотеке помоћу команде ./екампле.сх, али не можете да мењате садржај датотеке. Опције за преглед садржаја датотеке и измену командних линија да би се поправила синтаксичка грешка у близини неочекиваног токена ‘(‘ су размотрене у наставку.

Опција 1: Преко ЦАТ команде

Прва опција је да користите команду цат за преглед датотеке у схелл скрипти. Прочитајте садржај датотеке са неочекиваном грешком у токену користећи команду цат тако што ћете у терминал укуцати команду цат –в екампле.сх.

Напомена 1: екампле.сх се користи у сврху објашњења и потребно је да унесете име датотеке која има неочекивану грешку у токену.

Напомена 2: Команда цат –в се користи за приказивање свих невидљивих знакова који ће вероватно представљати размак за повратак или размак без прекида.

Опција 2: Преко ВКС команде

Ако не можете да користите команду цат, можете покушати да користите команду вк да видите и измените команде у датотеци користећи корак дат у наставку. Откуцајте команду сх –вк ./екампле.сх у Терминал да бисте отворили датотеку.

Опција 3: Преко од –а команде

3. Ако постоји неколико невидљивих знакова у командним линијама, можете користити команду од –а да видите датотеку. Ако садржај датотеке није видљив у датотеци кода, можете покушати да прочитате датотеку користећи команду од –а екампле.сх да бисте изменили код.

Корак ИИ: Уклоните преломе Виндовс линија

Ако постоје преломи Виндовс линија у схелл скрипти, можете користити команде конзоле да уклоните преломе линија и копирате линије кода у нову датотеку да бисте исправили грешку.

Унесите следећу команду у Терминал да бисте сачували садржај у датотеци у другу датотеку под називом цоррецтедекампле.сх да бисте уклонили преломе Виндовс линија у скрипти.

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

Корак ИИИ: Подесите дозволе за новостворену датотеку

Морате да подесите дозволу за новокреирану датотеку да бисте уређивали датотеку тако да се датотека може извршити у љусци. Откуцајте команду као цхмод 755 цоррецтедекампле.сх у Терминал да бисте обезбедили дозволе датотеци и покренули датотеку. Сада можете да видите исправљену датотеку и решите проблеме са форматирањем и поправите синтаксичку грешку у близини неочекиваног токена „(“ у датотеци.

Корак ИВ: Форматирајте код у датотеци

Други корак је да појединачно форматирате линије кода и ручно промените командне линије у датотеци. Опције за форматирање датотеке да би се поправила синтаксичка грешка у близини неочекиваног токена ‘(‘ су разматране у наставку у овом одељку.

Опција 1: Замените једноструке наводнике двоструким наводницима

Ако користите једноструке наводнике у командним линијама, морате да измените команду тако што ћете заменити једноструки наводник двоструким наводницима да бисте поправили синтаксичку грешку. У датотеци екампле.сх уклоните редове кода који имају ‘ и ‘ или једноструке наводнике у команди и замените једноструке наводнике двоструким наводницима или знаком “ и „. Овде, у датотеци примера, морате да промените код као стр= „Прва командна линија „(пример датотеке)“ у скрипти“

Напомена: Двоструки наводници су неопходни за команде типа параметра као што је стр= “[(1,2),(3,4)]”.

Опција 2: Додајте $ у низове

Ако сте додали вредности стрингова у скрипту, потребно је да додате $ вредностима стрингова да бисте поправили синтаксичку грешку у скрипти. Додајте $ за командне линије са вредностима стрингова да бисте поправили неочекивану грешку. Овде, у датотеци примера, промените командну линију као;

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

Напомена: Ако користите $ у вредности стринга, можете заобићи излазну секвенцу обрнуте косе црте пошто су командне линије декодиране АНСИ Ц стандардом. Другим речима, коришћењем $ за вредност стринга, можете избећи коришћење двоструких наводника уместо једноструких наводника у командним линијама.

Опција 3: Претворите табулаторе у размаке

Размаци које сте оставили између две изјаве у команди морају бити размаци уместо табулатора да би се поправила синтаксичка грешка у скрипти. Ако добијете грешку на Цигвин-у, можете покушати да конвертујете картице у кодовима у размаке да бисте исправили грешку. Командна линија је дата испод као;

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

Горњу команду треба поново написати као што је приказано у наставку да бисте исправили грешку.

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

Опција 4: Користите Есцапе знакове

Ако користите басх карактер, важно је да користите есцапе знак заједно са басх карактером да бисте поправили синтаксичку грешку. Заграде или () су басх специјални знакови у датотеци, стога бисте морали да користите излазни знак или обрнуту косу црту у командној линији да бисте избегли нормалне знакове да бисте извршили команду. Наредба стр= ‘Прва командна линија од ‘(пример фајла)’ у скрипти’ не би дала грешку у терминалу јер се користи излазни знак.

Опција 5: Користите размак између знакова

Скрипта љуске препознаје команде и изјаве у скрипти према подразумеваним вредностима. Морате да обезбедите исправну употребу простора између знакова тако да шкољка може да идентификује команду дату у скрипти. Размак је знак који се користи за разликовање два знака у командној линији. У коду нема размака између иф и [, 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: Користите сепаратор команди за изјаве

Различите команде у схелл скрипти морају бити раздвојене у наредбе да би Терминал идентификовао појединачне команде. Морате да користите сепаратор команди да бисте поправили синтаксичку грешку у Линук Басх-у. Изјаве у команди морају бити раздвојене сепаратором команди као што је тачка и зарез или ; или нови ред притиском на тастер Ентер. На пример, команда у коду иф [ $ 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” ]; затим ехо „мон“; иначе ехо „не мон“; Готово; фи треба затворити у исправном редоследу. Промена кода као што је приказано у наставку може да исправи неочекивану грешку токена пошто се исправи редослед затварања изјава.

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

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

Ако сте копирали код и налепили га у нову датотеку на терминалу, можете покушати да препишете код ручно да бисте исправили грешку. Грешке у коду се могу поправити ако сте код написали без икаквих грешака у формату у схелл скрипти. То је зато што су скривени знакови и проблеми са форматирањем у уређивачу текста као што је Мицрософт Ворд, које сте можда користили за копирање и лепљење кода, можда довели до грешке.

Метод 3: Користите команду Дос2уник.еке

Ако користите Уник оперативни систем, можете писати кодове са знаком за помицање реда као н да бисте прешли на следећи ред у датотеци. Међутим, ако користите Виндовс ОС, потребно је да пређете на следећи ред у коду користећи враћање прелаза и померање реда или рн у датотеци. Ако извршите код написан у оперативном систему Виндовс у Цигвин-у, можда ћете добити грешку у синтакси близу неочекиваног токена ‘(‘.

Да бисте исправили грешку, потребно је да обришете знакове за враћање прелаза користећи алатку командне линије ДОС у Уник као претварач формата текстуалне датотеке. Откуцајте следећу команду као дос2уник.еке екампле.сх у Терминал и можете конвертовати датотеку у Уник формат.

***

У чланку се расправљало о основним методама за исправљање Басх синтаксичке грешке у близини неочекиваног токена ‘(‘ у скрипти. Ако користите Линук Басх, можете користити методе објашњене у овом одељку да поправите Басх синтаксичку грешку близу неочекиваног токена. Ако прочитали сте цео чланак и открили да је садржај користан, јавите нам своје предлоге и упите у одељку за коментаре.

  Најбољи ВПН за Цхромебоок