Bash-syntaxisfout repareren in de buurt van onverwacht token
Diversen / / May 30, 2022
![Bash-syntaxisfout repareren in de buurt van onverwacht token](/f/2354f2ec9eb0c3c29d140a06e3066a5f.png)
Coderen in de Linux Bash Terminal is een overheersende praktijk geworden in de codeersector. De software-ingenieurs en studenten die de codeertaal leren, komen verschillende fouten tegen. Als u herhaaldelijk de fouten hebt gezien, zoals Syntaxisfout in de buurt van onverwachte token '(' of Bash-syntaxisfout bijna onverwacht token, je kunt proberen te vertrouwen op de methoden die in het artikel worden beschreven en een bekwame worden codeur. Lees de methoden die in het artikel worden beschreven in de beschreven volgorde en herstel de fouten in de opdrachtregels in uw bestand.
![Bash-syntaxisfout repareren in de buurt van onverwacht token](/f/2e157f68698de3d4eee628460954a7e6.png)
Inhoud
- Bash-syntaxisfout oplossen in de buurt van onverwacht token
- Methode 1: Handmatig fouten in elke opdrachtregel herstellen
- Stap I: Inhoud van bestand lezen
- Stap II: Windows-regelonderbrekingen verwijderen
- Stap III: machtigingen instellen voor een nieuw gemaakt bestand
- Stap IV: Code opmaken in het bestand
- Methode 2: Code herschrijven
- Methode 3: Gebruik de opdracht Dos2unix.exe
Bash-syntaxisfout oplossen in de buurt van onverwacht token
Linux Bash is een opdrachtregelinterpreter voor het op Linux gebaseerde systeem en is een vervanging voor de Bourne Shell of sh. De bestanden worden genoemd in het .sh-formaat in Linux bash scripten. Als er opmaakproblemen zijn in de code in het shellscript, kan er een syntaxisfout optreden. Als de fout dicht bij de ( teken, zal de shell u naar de fout in de regel vragen en de fout in de corresponderende regel weergeven. Aangezien de Linux Bash een interpreter is, wordt de regel met de fout naar u teruggestuurd in de Terminal en stopt het met het scannen van de rest van de opdrachten in het script. Daarom moet u de fout in de specifieke opdrachtregel herstellen en doorgaan naar de volgende om de onverwachte tokenfout in het shellscript op te lossen. De oorzaken voor de syntaxisfout in de buurt van onverwachte token in de Linux Bash worden hieronder in deze sectie vermeld, zoals hieronder:
- Coderen met escape-reeksen- Als u de codes in Bash-scripting hebt geschreven, kunnen de escape-reeksen of de aanhalingstekens in het script fouten veroorzaken. De escape-reeksen en aanhalingstekens moeten in het juiste formaat worden geschreven om de fout te herstellen.
- Onjuiste syntaxis in het coderingsbestand- De syntaxis in de code kan de syntaxisfout geven als de opdracht in de verkeerde syntaxis is geschreven, zoals het wijzigen van de volgorde van lussen.
- Verkeerd gebruik van de opdracht- Als u de opdracht niet correct gebruikt, zoals onjuiste toewijzing van waarden, heeft u mogelijk een syntaxisfout.
- Incompatibel besturingssysteem in de systemen- Als de shell voor het codeerscript niet compatibel is tussen de Unix- en DOS-systemen, kan er een onverwachte fout optreden.
- Problemen in het bash-shellscript- De problemen die worden uitgevoerd in het bash-shellscript op het bestand dat van een ander systeem is gekopieerd, kunnen de onverwachte tokenfout veroorzaken.
Overweeg een bestand met de naam voorbeeld.sh gemaakt in de Linux Bash-scripting met de volgende opdrachtregels voor verklarende doeleinden. Het voorbeeldbestand heeft de mogelijkheid voor syntaxisfouten en bevat alle mogelijke commando's die in het shellscript kunnen worden gebruikt.
str= 'Eerste opdrachtregel van '(voorbeeldbestand)' in het script'str= [(1,2),(3,4)]if[ $dag == “ma” ] dan echo "ma"anders echo "nee ma"fivoor VARIABELE in {0..2}; dandoe echo opdracht1; echo commando2; echo commando3; echo commando4; gedaanterwijl waar; doen als [ $ dag == “ma” ]; echo dan "mon"; anders echo "niet ma"; gedaan; fi
![voorbeeldbestand met opdrachtregels in linux bash](/f/344e7f952af898601d5d35c319efb1ef.png)
Methode 1: Handmatig fouten in elke opdrachtregel herstellen
De eerste methode om de fouten op te lossen, is door de syntaxisfout handmatig op elke opdrachtregel in het script op te lossen. De stappen om de syntaxisfouten in de buurt van een onverwacht token in de opdrachtregels op te lossen, worden in deze sectie besproken. Het proces om de onverwachte tokenfout in de Terminal op te lossen, wordt hieronder beschreven. Voer het bestand uit in de Terminal door de. te typen ./voorbeeld.sh commando en druk op de Binnenkomensleutel.
![voorbeeld.sh bestand openen commando. Bash-syntaxisfout repareren in de buurt van onverwacht token](/f/eb83f5a3f3513627738ad7508e25bfa0.png)
2. Merk op lijnen die de onverwachte tokenfout hebben in de opdrachtregels op het onderstaande resultaat.
3. Herstel de fout in elke regel door de hieronder besproken methoden afzonderlijk te volgen en besparing het bestand.
4. Rennen het bestand opnieuw na de wijzigingen en controleer of de syntaxisfout in het bestand is opgelost.
Lees ook:Hoe Linux Bash Shell op Windows 10 te installeren
Stap I: Inhoud van bestand lezen
De eerste stap om de syntaxisfout in de opdrachtregels op te lossen, is door het bestand in de Terminal te lezen. ALS er problemen zijn met het bestand, kunt u het bestand mogelijk niet bekijken. De normale praktijk van het bekijken van het bestand is om het bestand uit te voeren met de opdracht ./voorbeeld.sh maar u kunt de inhoud van het bestand niet wijzigen. De opties om de inhoud van het bestand te bekijken en de opdrachtregels aan te passen om de syntaxisfout in de buurt van het onverwachte token '(' te herstellen, worden hieronder besproken.
Optie 1: via CAT-opdracht
De eerste optie is om de kat commando om het bestand in het shellscript te bekijken. Lees de inhoud van het bestand met de onverwachte tokenfout met behulp van de cat-opdracht door de opdracht te typen cat –v voorbeeld.sh in de Terminal.
Notitie 1: De voorbeeld.sh wordt gebruikt voor verklarende doeleinden en u moet de naam typen van het bestand met de onverwachte tokenfout.
Opmerking 2: De opdracht cat –v wordt gebruikt om alle onzichtbare tekens weer te geven die waarschijnlijk de regelterugloop of no-break spatie vertegenwoordigen.
![voorbeeld.sh bestand open cat commando in linux terminal](/f/9ceb27a4b15da3c8d9855d115a083953.png)
Optie 2: Via VX Command
Als u het cat-commando niet kunt gebruiken, kunt u proberen het vx-commando te gebruiken om de commando's in het bestand te bekijken en te wijzigen met behulp van de onderstaande stap. Typ de sh –vx ./voorbeeld.sh commando in de Terminal om het bestand te openen.
![sh vx voorbeeld.sh commando. Bash-syntaxisfout repareren in de buurt van onverwacht token](/f/ed772d3d5b9a6520718a93456b1da40e.png)
Optie 3: Via od -a Commando
3. Als er een paar onzichtbare tekens in de opdrachtregels staan, kunt u de opdracht od –a gebruiken om het bestand te bekijken. Als de inhoud van het bestand niet zichtbaar is in het codebestand, kunt u proberen het bestand te lezen met het commando od –een voorbeeld.sh om de code te wijzigen.
![od een voorbeeld.sh commando in linux terminal](/f/eeccd3252d58d02a2348dbe03685840b.png)
Stap II: Windows-regelonderbrekingen verwijderen
Als er Windows-regeleinden in het shellscript zijn, kunt u de console-opdrachten gebruiken om de regeleinden te verwijderen en de coderegels naar een nieuw bestand te kopiëren om de fout te herstellen.
Voer de volgende opdracht in de Terminal in om de inhoud van het bestand op te slaan in een ander bestand met de naam corrigeervoorbeeld.sh om de Windows-regeleinden in het script te verwijderen.
tr –d ‘\r’corrigeervoorbeeld.sh
![console-opdracht om de regeleinde van Windows te verwijderen. Bash-syntaxisfout repareren in de buurt van onverwacht token](/f/4189da3a683faf469f5b3d1b8c9d4a70.png)
Stap III: machtigingen instellen voor een nieuw gemaakt bestand
U moet de toestemming voor het nieuw gemaakte bestand instellen om het bestand te bewerken, zodat het bestand in de shell kan worden uitgevoerd. Typ de opdracht als chmod 755 correctexample.sh in de Terminal om de machtigingen voor het bestand te geven en het bestand uit te voeren. U kunt nu het gecorrigeerde bestand bekijken en de opmaakproblemen oplossen en de syntaxisfout in de buurt van het onverwachte token '(' in het bestand oplossen.
![chmod 755 correctdexample.sh commando om machtigingen in linux terminal in te stellen](/f/c24a2acb4404215bee3be626386b905c.png)
Stap IV: Code opmaken in het bestand
De tweede stap is om de coderegels afzonderlijk op te maken en de opdrachtregels handmatig in het bestand te wijzigen. De opties om het bestand te formatteren om de syntaxisfout in de buurt van het onverwachte token '(' te herstellen, worden hieronder in deze sectie besproken.
Optie 1: Vervang enkele aanhalingstekens door dubbele aanhalingstekens
Als u de enkele aanhalingstekens in de opdrachtregels gebruikt, moet u de opdracht wijzigen door de enkele aanhalingstekens te vervangen door dubbele aanhalingstekens om de syntaxisfout te herstellen. In de voorbeeld.sh bestand, verwijder dan de coderegels met ‘ en ’ of de enkele aanhalingstekens in de opdracht en vervang de enkele aanhalingstekens door de dubbele aanhalingstekens of de “ en ’’. Hier, in het voorbeeldbestand, moet u de code wijzigen als: str= “Eerste opdrachtregel van “\(voorbeeldbestand)\” in het script”
Opmerking: De dubbele aanhalingstekens zijn nodig voor de commando's van het parametertype, zoals: str= “[(1,2),(3,4)]”.
![vervang enkele aanhalingstekens door dubbele aanhalingstekens in het bash-bestand voorbeeld.sh](/f/d1843275f7639d3715f78f682a77378f.png)
Lees ook:20 beste lichtgewicht Linux-distributies van 2022
Optie 2: $ toevoegen aan tekenreeksregels
Als u tekenreekswaarden aan het script hebt toegevoegd, moet u een $ toevoegen aan de tekenreekswaarden om de syntaxisfout in het script te herstellen. Voeg de. toe $ voor de opdrachtregels met de snaar waarden om de onverwachte fout te herstellen. Verander hier, in het voorbeeldbestand, de opdrachtregel als;
str= $ ‘Eerste opdrachtregel van ‘\(voorbeeldbestand)\’ in het script’
Opmerking: Als u de $ in de tekenreekswaarde kunt u de escape-reeks van de backslash omzeilen, aangezien de opdrachtregels worden gedecodeerd door de ANSI C-standaard. Met andere woorden, door een $ te gebruiken voor tekenreekswaarde, kunt u voorkomen dat u dubbele aanhalingstekens gebruikt in plaats van enkele aanhalingstekens in de opdrachtregels.
![dollarteken in de tekenreekslijnen. Bash-syntaxisfout repareren in de buurt van onverwacht token](/f/0817bde26be03406189a6bd9b2df3988.png)
Optie 3: converteer tabbladen naar spaties
De spaties die u tussen twee instructies in de opdracht hebt gelaten, moeten spaties zijn in plaats van tabs om de syntaxisfout in het script te herstellen. Als u de fout op Cygwin krijgt, kunt u proberen de tabbladen in de codes om te zetten in spaties om de fout op te lossen. De opdrachtregel wordt hieronder gegeven als;
doe echo opdracht1; echo commando2; echo commando3; echo commando4; gedaan
![tabs die worden gebruikt in de opdracht do echo in het bestand example.sh bash](/f/0d45254ce6363b1fda45a7e3d93fe1f2.png)
De bovenstaande opdracht moet worden herschreven zoals hieronder wordt weergegeven om de fout op te lossen.
doe echo opdracht1; echo commando2; echo commando3; echo commando4; gedaan
Optie 4: Escape-tekens gebruiken
Als u een bash-teken gebruikt, is het belangrijk om samen met het bash-teken een escape-teken te gebruiken om de syntaxisfout te herstellen. De haakjes of () zijn speciale bash-tekens in het bestand, daarom zou u het escape-teken of de moeten gebruiken backslash in de opdrachtregel om te ontsnappen aan de normale tekens om de opdracht uit te voeren. De str= 'Eerste opdrachtregel van \'(voorbeeldbestand)\' in het script' commando zou geen fout geven in de Terminal omdat het escape-teken wordt gebruikt.
Lees ook: Hoe u onder ons kunt komen op Linux
Optie 5: ruimte tussen tekens gebruiken
Het shellscript herkent de opdrachten en instructies in het script aan de hand van de standaardwaarden. U moet ervoor zorgen dat de ruimte tussen tekens correct wordt gebruikt, zodat de shell de opdracht in het script kan identificeren. De spatie is een teken dat wordt gebruikt om twee tekens op de opdrachtregel te onderscheiden. In de code is er geen spatie tussen de als en [, die de onverwachte tokenfout geeft als de als[ commando wordt niet geïdentificeerd door de shell. Als de code wordt gewijzigd in if [ $ dag == “ma” ]; dan kan de fout worden opgelost als de shell bulletin-opdracht als wordt geïdentificeerd door de schaal.
Optie 6: Command Separator gebruiken voor verklaringen
De verschillende commando's in het shellscript moeten worden gescheiden in instructies zodat de Terminal individuele commando's kan identificeren. U moet een opdrachtscheidingsteken gebruiken om de syntaxisfout in de Linux Bash te herstellen. De instructies in de opdracht moeten worden gescheiden door een opdrachtscheidingsteken zoals een puntkomma of a ; of een nieuwe regel door op de te drukken Binnenkomen sleutel. Bijvoorbeeld het commando in de code if [ $ dag == “ma” ] dan moet worden gewijzigd als if [ $ dag == “ma” ]; dan om de fout te herstellen. Aangezien de puntkomma wordt gebruikt als opdrachtscheidingsteken tussen de tekens [ en dan, kunt u deze fout herstellen.
![bewerk de opdracht voorbeeld.sh in het bash-bestand. Bash-syntaxisfout repareren in de buurt van onverwacht token](/f/b15f316943e7bcadc70a7438e4541261.png)
Optie 7: Aanvullende verklaringen verwijderen
Soms heeft u aanvullende instructies toegevoegd of heeft u de codes door elkaar gehaald in het geval van meerdere geneste lussen. U moet de aanvullende instructies op de opdrachtregels verwijderen om de syntaxisfout in de buurt van het onverwachte token '(' in de Linux Bash. De bash-loops voor... klaar of en de constructieve constructies als... fi moet in de juiste syntaxis staan. Het voorbeeldbestand heeft de verkeerde syntaxis in de voor lus heeft de term dan die wordt gebruikt in de als uitspraak. Als u de code wijzigt als de volgende code, wordt de onverwachte tokenfout opgelost. de verklaring dan is een aanvullende verklaring in de code en het verwijderen van de term lost de fout op.
voor VARIABELE in {0..2}; doe echo opdracht1; echo commando2; echo commando3; echo commando4; gedaan
![het bewerken van de opdracht for in het bash-bestand voorbeeld.sh](/f/09f0a51ef4558250313a51dc7e1c714c.png)
Optie 8: Zorg ervoor dat de volgorde van afsluiting van overzichten correct is
Als u veel geneste of voorwaardelijke constructie-instructies in het shellscript gebruikt, moet u ervoor zorgen dat de lussen worden gesloten in de volgorde waarin ze worden geopend. U kunt een nieuw lijnscheidingsteken gebruiken om conflicten met de lussen te voorkomen. De volgorde van het sluiten van de geneste lussen en voorwaardelijke instructies moet correct zijn en mag niet worden gewijzigd. De lussen in de code terwijl waar; doen als [ $ dag == “ma” ]; echo dan "mon"; anders echo "niet ma"; gedaan; fi moet in de juiste volgorde worden gesloten. Het wijzigen van de code zoals hieronder wordt weergegeven, kan de onverwachte tokenfout herstellen als de volgorde van het sluiten van de instructies wordt gecorrigeerd.
terwijl waar; doen als [ $ dag == “ma” ]; echo dan "mon"; anders echo "niet ma"; vij; gedaan
![doen terwijl commando. Bash-syntaxisfout repareren in de buurt van onverwacht token](/f/06ce0c213abb15c053f52ccdce91cbb1.png)
Lees ook:Wat is een opdrachtregelinterpreter?
Methode 2: Code herschrijven
Als u de code hebt gekopieerd en in een nieuw bestand op de Terminal geplakt, kunt u proberen de code handmatig te herschrijven om de fout te herstellen. De fouten in de code kunnen worden hersteld als u de code hebt geschreven zonder formaatfouten in het shellscript. Dit komt omdat de verborgen tekens en de opmaakproblemen in de teksteditor zoals Microsoft Word, die u mogelijk hebt gebruikt om de code te kopiëren en plakken, mogelijk de fout hebben gegeven.
Methode 3: Gebruik de opdracht Dos2unix.exe
Als u een Unix-besturingssysteem gebruikt, kunt u codes schrijven met het regelinvoerteken als: \n om naar de volgende regel in het bestand te gaan. Als u echter een Windows-besturingssysteem gebruikt, moet u naar de volgende regel in de code gaan met de regelterugloop en regelinvoer of de \r\n in het bestand. Als u de code uitvoert die is geschreven in het Windows-besturingssysteem in de Cygwin, krijgt u mogelijk de syntaxisfout bijna onverwacht token '('.
Om de fout op te lossen, moet u de regelteruglooptekens wissen met de DOS naar Unix opdrachtregelprogramma als een converter voor tekstbestandsindelingen. Typ de volgende opdracht als dos2unix.exe voorbeeld.sh in de Terminal en u kunt het bestand converteren naar het Unix-formaat.
![dos2unix.exe voorbeeld.sh commando. Bash-syntaxisfout repareren in de buurt van onverwacht token](/f/d5fbbb36fde3491200cea82d465ff68a.png)
Aanbevolen:
- Telegram-account maken op Android
- Fix Runtime Error C++ op Windows 10
- Hoe Github-account permanent te verwijderen
- Top 14 beste grafische kaart voor Linux
Het artikel heeft de basismethoden besproken om te repareren Bash-syntaxisfout in de buurt van onverwacht token‘(’ in het schrift. Als je een Linux Bash gebruikt, kun je de methoden gebruiken die in deze sectie worden uitgelegd om de Bash-syntaxisfout in de buurt van een onverwacht token op te lossen. Als je het hele artikel hebt gelezen en de inhoud nuttig vond, laat ons dan je suggesties en vragen weten in het opmerkingengedeelte.