Labojums: Sintakses kļūda netālu no neparedzēta marķiera '('



Izmēģiniet Mūsu Instrumentu Problēmu Novēršanai

Kļūdas ziņojums sintakses kļūda netālu no neparedzēta marķiera '(‘ notiek Unix tipa vidē Cygwin un komandrindas saskarnē sistēmā Windows. Šī 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.



Sintakses kļūda netālu no neparedzēta marķiera

Sintakses kļūda netālu no neparedzēta marķiera '(‘



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



Kas izraisa sintakses kļūdu netālu no neparedzēta marķiera `(‘?

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

  • Slikta sintakse izpildot jebkuru komandu jebkurā platformā. Vai nu jūs neizmantojat komandu pareizi, vai arī esat ievadījis nepareizu sintaksi.
  • Apvalks nav saderīgs starp Unix / DOS sistēmām.
  • Palaižot bash shell skriptu, rodas problēmas cits avots .

Š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 apmācībām, kuras mēģināt izpildīt. Jūs, iespējams, esat pieļāvis kādas sintakses kļūdu.

1. risinājums: komandu sintakses un formāta pārbaude

Pirmais un galvenais iemesls, kāpēc var rasties šis kļūdas ziņojums, ir nepareiza sintakse jūsu kodā vai arī jūs neievērojat 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 jāpievērš īpaša piesardzība papildu vieta , izmantošana dubultās pēdiņas un obligāts nepieciešamie parametri. Ja kāds no tiem trūkst vai ir deklarēts nepareizi, jūs nevarēsiet 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 rindas.

Parametra veida dēļ ir nepieciešamas dubultpēdiņas. Papildu atstarpe var arī sabojāt jūsu kodu un piespiest kļūdas ziņojumu. Pārliecinieties, vai esat pārbaudījis oficiālā dokumentācija izpildītās komandas un pārbaudiet, vai tur nav problēmu.

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

Ja izmantojat čaulas skriptu, kas darbojas avota sistēmā, bet atgriež kļūdu mērķī, skriptu varat novērst, pārbaudot mainīgos, kas tiek saglabāti izpildes laikā, un pēc tam noskaidrojiet, kas izraisa 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 čaulu ar parametru “vx”. Tas mums parādīs, kādas komandas tiek izpildītas un kādas vērtības tiek saglabātas skriptā. Šeit jūs varat novērst problēmas un diagnosticēt, kas notiek nepareizi.

Piemēram, izpildiet skriptu terminālā pēc tam, kad “vx” esat iekļāvis kā:

# sh -vx ./test_script5.sh

Skripta saturu varat pārbaudīt, izmantojot komandu ‘cat’, kā:

# kaķis test_script5.sh

3. risinājums: izmantojiet komandu ‘dos2unix.exe’

Windows / DOS teksta failos jauna rinda ir Carriage Return ( r) kombinācija, kurai seko Line Feed ( n). Operētājsistēmā Mac (pirms operētājsistēmas Mac OS X) līnijas pārtraukumā tika izmantota vienkārša Carriage Return ( r). Unix / Linux un Mac OS X izmanto rindas pārtraukumus ( n). Ja izmantojat Cygwin, tas neizdosies apstrādāt DOS / Windows un vecāku Mac skriptus papildu Carriage Return ( r) rakstzīmes dēļ.

Izmantojot

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ēsit izpildīt bez problēmām.

Noslēgumā jums jāizpēta komandas un izmantotās platformas veids un jāpārliecinās, vai nav nevienas neatbilstības. 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.

3 minūtes lasīts