Поправете: Синтаксична грешка близо до неочакван маркер `('
Грешка в синтаксиса на съобщението за грешка близо до неочакван маркер `(' възниква в среда от тип Unix, Cygwin и в интерфейса на командния ред в Windows. Тази грешка най-вероятно ще се задейства, когато се опитате да стартирате скрипт на черупка, който е бил редактиран или създаден в по-стари DOS / Windows или Mac системи.
Това съобщение за грешка се появява и когато въвеждате команди в командния ред на Linux за ежедневни задачи като копиране на файлове ръчно и т.н. Основните причини, поради които се появява това съобщение за грешка, са или поради лош синтаксис или проблем на ОС при интерпретиране на командите на друга система / черупка.
Какво причинява синтаксична грешка близо до неочакван маркер `('?
Причините за това съобщение за грешка са много разнообразни и не могат да бъдат изброени в една статия, тъй като има хиляди възможности за синтаксис да се обърка при изпълнение на команди. Основните причини за тази грешка са:
- Лош синтаксис при изпълнение на която и да е команда от всяка от платформите Или не използвате командата правилно, или сте въвели грешен синтаксис.
- Черупката не е съвместима между Unix / DOS системи.
- Има проблеми при стартирането на скрипта на bash shell от друг източник .
В тази статия предполагаме, че знаете основите на кодирането и имате представа какво правите. Ако сте начинаещ, най-добре е да следвате подробни уроци на езика / командата, които се опитвате да изпълните. Вероятно сте направили грешка на някакъв синтаксис.
Решение 1: Проверка на синтаксиса и формата на команди
Първата и най-важна причина, поради която може да изпитате това съобщение за грешка, е лошото синтаксис във вашия код или не следвате точния формат на командите. Всяка команда има предварително определен формат, който можете да видите в нейната документация. Няколко параметъра са незадължителни, а други са задължителни.
Освен това трябва да се внимава за допълнително пространство, използване на двойни кавички и задължителни параметри. Ако някой от тях липсва или е обявен неправилно, няма да можете да изпълните кода си.
Например вместо следния код
[mycom7] # ./ctopo.sh um_test1 [(1, 2), (2, 1)]
Трябва да го изпълните като
[mycom7] # ./ctopo.sh um_test1 "[(1, 2), (2, 1)]"
Освен това се уверете, че изпълнявате правилно вашите команди / скрипт на shell, ако се простира на няколко реда.
Поради типа на параметъра са необходими двойни кавички. Допълнително място може също да съсипе кода ви и да накара съобщението за грешка. Уверете се, че проверите официалната документация на командата, която изпълнявате, и проверете дали има проблем там.
Решение 2: Отстраняване на неизправности при скрипта на черупката
Ако използвате скрипт за черупки, който работи в изходната система, но връща грешка в целта, можете да отстраните неизправностите със скрипта, като проверите променливите, които се съхраняват по време на изпълнението и след това ще видите какво причинява проблема. Това е много честа причина, тъй като в няколко случая черупката се опитва да интерпретира непринтируем характер.
Опитайте да стартирате черупката с параметъра 'vx'. Това ще ни покаже какви команди се изпълняват и какви стойности се съхраняват в скрипта. Чрез тук можете да отстраните проблеми и да диагностицирате какво върви нередно.
Например, изпълнете скрипта в терминала, след като включите 'vx' като:
# sh -vx ./test_script5.sh
Можете да проверите съдържанието на скрипта, като използвате командата 'cat' като:
# cat test_script5.sh
Решение 3: Използване на командата 'dos2unix.exe'
В текстовите файлове на Windows / DOS нов ред е комбинация от Carriage Return (\ r), последвана от Feed Feed (\ n). В Mac (преди Mac OS X) за прекъсване на реда се използва обикновен Carriage Return (\ r). Unix / Linux и Mac OS X използват прекъсвания на линиите (\ n). Ако използвате Cygwin, той няма да обработи скриптовете, направени от DOS / Windows и по-стария Mac поради допълнителния символ за връщане на превоз (\ r).
Тук можете да направите команда 'dos2unix.exe', която ще преобразува скрипта в правилния формат и след това можете да го изпълните без никакви проблеми.
В заключение е необходимо да проучите командите и типа на платформата, която използвате, и да се уверите, че няма несъответствия. Тъй като не можем да обхванем всяка една възможност, вие имате идея какви видове грешки могат да възникнат и как да ги поправите.