Labojums: sintakses kļūda pie neparedzēta marķiera `('

Kļūdas ziņojuma sintakse kļūda netālu no negaidīta marķiera `(' rodas Unix tipa vidē Cygwin un Windows komandrindas saskarnē. Šī kļūda, visticamāk, tiks aktivizēta, mēģinot palaist čaulas skriptu, kas tika rediģēts vai izveidots vecākās DOS / Windows vai Mac sistēmās.

Sintakse kļūda pie neparedzēta marķiera `('

Šis kļūdas ziņojums tiek parādīts arī tad, kad Linux komandrindā ievadāt komandas ikdienas uzdevumiem, piemēram, failu kopēšanai manuāli utt. Galvenie iemesli, kāpēc rodas šis kļūdas ziņojums, ir vai nu sliktas sintakse, vai OS problēmas dēļ, interpretējot citas sistēmas komandas / apvalks.

Kas izraisa sintakses kļūdu blakus negaidītam marķierim `('?

Šī kļūdas ziņojuma iemesli ir ļoti dažādi, un tos nevar uzskaitīt vienā rakstā, jo, izpildot komandas, ir tūkstošiem iespēju sintaksei noiet greizi. Šīs kļūdas galvenie iemesli ir:

  • Slikta sintakse, izpildot jebkuru komandu abās platformās. Vai nu jūs pareizi neizmantojat komandu, vai arī esat ievadījis nepareizu sintakse.
  • Apvalks nav savietojams starp Unix / DOS sistēmām.
  • Ir problēmas ar bash shell skripta palaišanu no cita avota .

Šajā rakstā mēs pieņemam, ka jūs zināt kodēšanas pamatus un jums ir ideja, ko jūs darāt. Ja esat iesācējs, vislabāk ir sekot padziļinātām valodas / komandas pamācībām, kuras jūs mēģināt izpildīt. Jūs, iespējams, esat kļūdījies kādā sintaksē.

1. risinājums: pārbaudiet komandu sintakse un formātu

Pirmais un galvenais iemesls, kāpēc jums var parādīties šis kļūdas ziņojums, ir slikta sintakse jūsu kodā vai tas, ka neievērosit precīzu komandu formātu. Katrai komandai ir iepriekš noteikts formāts, kuru varat redzēt tās dokumentācijā. Vairāki parametri nav obligāti, bet citi ir obligāti.

Turklāt īpaši jāuzmanās par papildu vietu, divkāršu pēdiņu izmantošanu un obligātajiem nepieciešamajiem parametriem. Ja kāda no tām trūkst vai ir deklarēta nepareizi, jūs nevarēsit izpildīt savu kodu.

Piemēram, šī koda vietā

 [mycom7] # ./ctopo.sh um_test1 [(1, 2), (2, 1)] 

Jums tas jāizpilda kā

 [mycom7] # ./ctopo.sh um_test1 "[(1, 2), (2, 1)]" 

Pārliecinieties arī, vai pareizi izpildāt komandas / čaulas skriptu, ja tas aptver vairākas līnijas.

Parametra veida dēļ ir vajadzīgas dubultās pēdiņas. Papildu vieta var arī sabojāt jūsu kodu un piespiest kļūdas ziņojumu. Pārliecinieties, ka esat pārbaudījis izpildāmās komandas oficiālo dokumentāciju un redzat, vai tur ir kāda problēma.

2. risinājums: čaulas skripta problēmu novēršana

Ja izmantojat čaumalu skriptu, kas darbojas avota sistēmā, bet atgriež kļūdu mērķī, varat novērst skripta traucējumus, pārbaudot mainīgos, kas tiek saglabāti izpildes laikā, un pēc tam redzēt, kas rada problēmu. Tas ir ļoti izplatīts iemesls, jo vairākos gadījumos apvalks mēģina interpretēt neizdrukājamu rakstzīmi.

Mēģiniet palaist apvalku ar parametru 'vx'. Tas parādīs, kādas komandas tiek palaistas un kādas vērtības tiek saglabātas skriptā. Šeit jūs varat novērst traucējumus un diagnosticēt, kas notiek nepareizi.

Piemēram, izpildiet skriptu terminālī pēc “vx” iekļaušanas kā:

 # sh -vx ./test_script5.sh 

Jūs varat pārbaudīt skripta saturu, izmantojot komandu “cat” kā:

 # kaķis test_script5.sh 

3. risinājums: izmantojot komandu “dos2unix.exe”

Windows / DOS teksta failos jauna rinda ir kombinācija no pārvadājuma atgriešanas (\ r), kam seko līnijas padeve (\ n). Operētājsistēmā Mac (pirms Mac OS X) līnijas pārtraukumam tika izmantota vienkārša pārvadājuma atgriešana (rr). Unix / Linux un Mac OS X izmanto līnijas padeves (\ n) līnijas pārtraukumus. Ja jūs izmantojat Cygwin, tas neizdosies apstrādāt DOS / Windows un vecāka Mac izveidotos skriptus, jo ir papildu raksturs Carriage Return (\ r).

Izmantojot komandu “dos2unix.exe”

Šeit jūs varat izveidot komandu “dos2unix.exe”, kas pārveidos skriptu pareizajā formātā un pēc tam to varēs izpildīt bez jebkādām problēmām.

Noslēgumā jums ir jāizpēta savas komandas un izmantotais platformas tips un jāpārliecinās, ka tajā nav neatbilstību. Tā kā mēs nevaram aptvert katru iespēju, jums būtu ideja, kāda veida kļūdas var rasties un kā tās novērst.

Interesanti Raksti