Fix: Syntaxfel nära oväntat token `(& lsquo;

Felmeddelandens syntaxfel nära oväntad token `(' förekommer i en Unix-miljö, Cygwin och i kommandoradsgränssnittet i Windows. Detta fel kommer troligen att utlösas när du försöker köra ett skalskript som redigerades eller skapats i äldre DOS / Windows- eller Mac-system.

Syntaxfel nära oväntat token `('

Detta felmeddelande visas också när du skriver in kommandon i Linux-kommandoraden för vardagliga uppgifter som att kopiera filer manuellt etc. De främsta orsakerna till att detta felmeddelande uppstår är antingen på grund av dålig syntax eller problem med operativsystemet vid tolkning av ett annat systems kommandon / skal.

Vad orsakar syntaxfel nära oväntat token `('?

Orsakerna till detta felmeddelande är mycket olika och kan inte listas i en artikel eftersom det finns tusentals möjligheter att syntax går fel när kommandon körs. De viktigaste orsakerna till detta fel är:

  • Dålig syntax när du kör något kommando på någon plattform. Antingen använder du inte kommandot korrekt eller har angett fel syntax.
  • Skalet är inte kompatibelt mellan Unix / DOS-system.
  • Det finns problem som kör bash shell-skriptet från en annan källa .

I den här artikeln antar vi att du känner till grunderna för kodning och har en uppfattning om vad du gör. Om du är nybörjare är det bäst att du följer fördjupade handledning om språket / kommandot som du försöker utföra. Du har antagligen gjort ett misstag med någon syntax.

Lösning 1: Kontroll av syntax och format för kommandon

Den första och främsta anledningen till att du kan uppleva detta felmeddelande är att dålig syntax i din kod eller att du inte följer det exakta formatet på kommandona. Varje kommando har ett fördefinierat format som du kan se i dess dokumentation. Flera parametrar är valfria, vilka andra är obligatoriska.

Dessutom bör extra omsorg tas för extra utrymme , användning av dubbla citat och obligatoriska parametrar som krävs. Om någon av dem saknas eller har förklarats felaktigt kommer du inte att kunna köra din kod.

Till exempel istället för följande kod

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

Du måste köra det som

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

Se också till att du kör dina kommandon / skalskript korrekt om det sträcker sig över flera rader.

På grund av parametertypen är dubbla citat nödvändiga. Ett extra utrymme kan också förstöra din kod och tvinga felmeddelandet. Se till att du kontrollerar den officiella dokumentationen för kommandot du kör och ser om det finns ett problem där.

Lösning 2: Felsöka ditt skalskript

Om du använder ett skalskript som fungerar i källsystemet men returnerar ett fel i målet kan du felsöka skriptet genom att kontrollera variablerna som lagras under körningen och sedan se vad som orsakar problemet. Detta är en mycket vanlig orsak, eftersom skalet i flera fall försöker tolka en outskrivbar karaktär.

Försök att köra skalet med parametern 'vx'. Detta visar oss vilka kommandon som körs och vilka värden som lagras i skriptet. Härifrån kan du felsöka och diagnostisera vad som går fel.

Exempelvis kör skriptet i terminalen efter att ha inkluderat 'vx' som:

# sh -vx ./test_script5.sh

Du kan kontrollera innehållet i skriptet med kommandot 'cat' som:

# cat test_script5.sh

Lösning 3: Använd kommandot 'dos2unix.exe'

I Windows / DOS-textfiler är en ny rad en kombination av en Carriage Return (\ r) följt av en Line Feed (\ n). I Mac (före Mac OS X) använde en radbrytning en enkel vagnretur (\ r). Unix / Linux och Mac OS X använder Line Feed (\ n) radbrytningar. Om du använder Cygwin kommer det inte att behandla skript som gjorts av DOS / Windows och äldre Mac på grund av den extra Carriage Return (\ r) karaktären.

Använd kommandot 'dos2unix.exe'

Här kan du göra kommandot 'dos2unix.exe' som konverterar skriptet till rätt format och sedan kan du köra det utan problem.

För att avsluta, du behöver undersöka dina kommandon och typ av plattform du använder och se till att det inte finns några avvikelser. Eftersom vi inte kan täcka varje möjlighet skulle du ha en uppfattning om vilka typer av fel som kan uppstå och hur man åtgärdar dem.

Rekommenderas

Fix: Minecraft svarar inte
Vad är en ansökan om registrering av digital-TV-mottagare och bör den tas bort?
Vad är FileRepMalware och ska du ta bort det